Live service nerve-map — interactive constellation of local ports with connect-only liveness (TCP only; no HTTP, no accidental LLM inference).
Portable by design: your service names, ports, and edges live in topology.json. Nothing in the map is tied to a particular appliance, agent stack, or host username.
© 2026 AetherAwareness · PolyForm Noncommercial 1.0.0 · free for noncommercial use · not free to monetize (COMMERCIAL.md)
Contact: admin@aetherawareness.com
| Doc | Link |
|---|---|
| Complete how-to | docs/GUIDE.md |
| Product description | docs/PRODUCT.md |
| Download | Releases |
Multi-service local stacks need a calm “what is running?” view. HTTP health checks can wake models. Port tables do not show relationships. Constellation is a local map + non-disruptive probe.
- Self-contained HTML sky map (no build toolchain)
- Topology driven by JSON you own (
topology.json) - Categories you define (colors + labels)
- Hover / click / pan / zoom / drag
- Optional
constellation-status.py— TCP connect only - Generic example included; replace every name and port for your machine
git clone https://github.com/AetherAwareness/aether-constellation.git
cd aether-constellation
# 1) Make the map yours
cp topology.example.json topology.json
# edit topology.json — names, ports, edges for YOUR services
# 2) Optional liveness (writes aether-status.js + topology.js)
python3 constellation-status.py
# 3) Open
python3 -m http.server 8766
# browser → http://127.0.0.1:8766/constellation.html
# Or: ./launch.sh (Chrome/Chromium app window + one-shot probe)Custom ports without editing topology:
AETHER_STATUS_PORTS=8080,3000,11434 python3 constellation-status.pyFull operator manual: docs/GUIDE.md.
Source of truth: topology.json (gitignored). Start from the example:
{
"title": "Aether Constellation",
"subtitle": "Service map · live · hover · click",
"host": "127.0.0.1",
"categories": {
"core": { "color": "#00e6d8", "label": "Core" },
"agent": { "color": "#3dff88", "label": "Agents & APIs" }
},
"nodes": [
{ "port": 8095, "name": "LLM Server", "category": "core",
"role": "Local inference endpoint.", "primary": true }
],
"edges": [
[8080, 8095]
]
}- nodes — each service:
port,name,category,role(optionalprimaryfor the pulse ring) - edges — undirected “talks to” pairs of ports
- Copy the file next to
constellation.htmlon any machine; no code edits required
The HTML also accepts a generated topology.js (window.AETHER_TOPOLOGY) so file:// opens work after the status probe runs.
| Variable | Purpose |
|---|---|
AETHER_CONSTELLATION_TOPOLOGY |
Path to topology JSON |
AETHER_STATUS_OUT |
Where to write aether-status.js |
AETHER_STATUS_HOST |
Probe host (default 127.0.0.1) |
AETHER_STATUS_PORTS |
Comma-separated port override |
AETHER_STATUS_TIMEOUT |
Connect timeout seconds (default 0.4) |
AETHER_ACTIVE_MODEL / ACTIVE_MODEL / LLM_MODEL |
Optional model label in the live panel |
AETHER_CONSTELLATION_HTML |
Launcher: path to HTML |
AETHER_CONSTELLATION_STATUS |
Launcher: path to status script |
| Project | Role |
|---|---|
| AetherForge | MoE post-training factory |
Constellation itself does not depend on AetherForge.
Copyright © 2026 AetherAwareness.
PolyForm Noncommercial License 1.0.0 — see COMMERCIAL.md for monetization boundary.