A modern, stateless network-diagnostic platform — a single
self-contained Go binary that fronts a fleet of routers over SSH
and exposes ping / traceroute / BGP lookups through a gRPC
(ConnectRPC) API, an embedded SvelteKit web UI, and a lg-cli
client.
Built to replace the abandoned/ancient looking glass projects most of us are still running.
Demo instance: https://lg.as203038.net/ (used as a daily driver by AS203038).
# Run a released binary
curl -L -o looking-glass \
https://github.com/AS203038/looking-glass/releases/latest/download/looking-glass-linux-amd64
chmod +x looking-glass
curl -L -o config.yaml \
https://raw.githubusercontent.com/AS203038/looking-glass/main/example.config.yaml
$EDITOR config.yaml
./looking-glass
Or build from source / Docker — full walk-through in Getting Started.
All documentation lives in docs/. Start with the
index or jump straight to:
| Topic | Use when… |
|---|---|
| Getting Started | You want a running server in five minutes. |
| Configuration | You need the authoritative config.yaml reference. |
| Deployment | You're shipping to production (systemd / Docker / Kubernetes). |
| Architecture | You want to understand how the pieces fit together. |
| Router Templates | You need to add a vendor / write or override a router template. |
| API Reference | You're integrating with the gRPC / ConnectRPC API. |
| CLI Reference | You're using or scripting against lg-cli. |
| Development | You're contributing — local dev loop, codegen, conventions. |
Looking Glass ships with a CLI (lg-cli) that can address any
instance by friendly name or ASN rather than a full URL:
lg-cli ping as203038 1 1.1.1.1
lg-cli routers AS203038
That lookup is powered by public_index.yaml
— a small, plain-text registry of public Looking Glass
deployments. Right now it contains exactly one entry. It will
only become genuinely useful when more operators add theirs.
It's a five-line addition:
index:
- name: "QuxLabs"
asn: 203038
url: "https://lg.as203038.net/"
- name: "Your Network" # ← add your block
asn: 65000
url: "https://lg.example.net/"
The instance doesn't need to run this Looking Glass —
any ConnectRPC-speaking endpoint that implements the
lookingglass.v0.LookingGlassService contract works. (Old PHP or
Perl looking glasses don't qualify; this is part of the point of
replacing them.) Open a PR against the file and that's it.
For details on the API contract every indexed instance is expected to honour, see API Reference.
Production-ready and actively maintained. The AS203038 demo instance is a daily-driver deployment.
Currently bundled router templates: FRRouting, Cisco IOS/IOS-XE, Arista EOS, Juniper JunOS, Nokia SR OS, MikroTik RouterOS.
Contributions are welcome — especially new router templates. If you can give us read-only access to a vendor we don't yet support, we'll happily write the template ourselves. File an issue.
See Development for the local dev loop and conventions.
GPL-3.0-or-later. See LICENSE.