NeXuS Compass — nexus-darknet-go + MNEMOSYNE DECK (2026-07-07)¶
Two Go TUI projects: nexus-darknet-go (darknet control plane) and MNEMOSYNE DECK (AI character + network cockpit). Read this to resume.
1. nexus-darknet-go¶
Location: ~/nexus-darknet-go/
Build: cd ~/nexus-darknet-go && go build -o nexus-darknet .
Run: ./nexus-darknet tui | ./nexus-darknet serve (port 8800) | ./nexus-darknet status
Binary also at: ~/scripts/nexus-darknet (symlink, on PATH)
No git repo yet — needs git init + .gitignore + dev branch (protocol).
Architecture¶
- Single Go binary: Bubble Tea TUI (8 tabs) + embedded web dashboard (:8800) + Cobra CLI
- Services defined in
services.yaml— 16 services, dependency graph, bootstrap order - Shell contract pattern: each service has a
scripts/nexus-<name>.sh start|stop|status services/manager.go→network/runner.go→ shell scripts
Tabs¶
^W Networks · ^E Services · ^H Hosting · ^U Jurisdiction · ^L Log · ^T Doctor · ^G Ghost Gate · ^O OpenSnitch
Bugs Fixed This Session¶
- Service status all showing ON —
network/runner.goline 92:err == nil || output == "RUNNING"was wrong (OR not AND). Fixed to check output string only, not exit code. - nexus-opensnitch.sh — was calling
opensnitchddirectly; fixed torc-service opensnitch start|stop|status. Binary at/usr/local/bin/opensnitchd, service name =opensnitch. - Ghost Gate ACTIVE with no internet —
gate_state.jsonhad"status": "active"with 0 permits, blocking all traffic. Set toinactive. Theissue/revokecommands in the TUI are simulation only — they print success but never write togate_state.jsonor call any script. Not yet fixed.
Ghost Gate — How It Works¶
- State file:
~/.nexus/gate_state.json— written by Python orchestrator at~/Projects/nexus-orchestrator/nexus/nexus_ghost_gate.py ghostgate/status.goreads:gate_state.json→ nft tables →/tmp/nexus_ghost.lock(fallback)- TUI
execGhostCmd()intui/app.gois all simulation —issue/revoke/listare placeholders - Pending fix: wire
issue/revoketo actually write permits togate_state.json
OpenSnitch¶
- Daemon:
/usr/local/bin/opensnitchd(built from~/git/opensnitch/) - Service:
rc-service opensnitch start|stop|status - Rules dir:
~/.config/opensnitch/rules/— must exist (mkdir -p) - Init script
/etc/init.d/opensnitch— addedcommand_args="-rules-path /home/user/.config/opensnitch/rules"so daemon + TUI point at same dir (daemon runs as root, HOME=/root without this fix) - Rules are JSON files; TUI writes them on
Ctrl+A/Ctrl+Dfrom live event feed
Services Status (as of 2026-07-06)¶
rc-service opensnitchworks ✅- IPFS installed (v0.41.0) but not initialized —
ipfs initneeded before it can run - Ghost Gate:
gate_state.jsonset to inactive ✅ - Tor Hydra: STOPPED | I2P: shows ON (i2pd rc-service) | DNS/Yggdrasil/Privoxy/Medusa: status uncertain
Pending¶
- Wire Ghost Gate
issue/revoketo write real permits ipfs init+ lock down config (swarm bind to localhost only)- Git init the project
- Doctor tab still uses hardcoded health checks (from PLAN_OF_ATTACK.md Phase 1.1)
- Jurisdiction tab stubs (applier.go — Phase 1.2)
- Log viewport scroll not wired (Phase 1.3)
2. MNEMOSYNE DECK¶
Location: ~/Projects/nexus-network-stack/deck/
Build: cd ~/Projects/nexus-network-stack/deck && go build -o nexus-deck .
Run: ./nexus-deck
Module: char-gen-cli (same module as char-gen-cli-go — same package)
Status: Builds and runs. All 5 tabs functional at basic level.
Tabs¶
1 Pulse (service audit) · 2 Sanctum (AI chat) · 3 Studio (character registry) · 4 Vault · 5 Gate (Ghost Gate HUD)
Alert: API offline (check localhost:8801)¶
- The Pulse tab polls
localhost:8801for nexus-hydra/orchestrator - Fix: start nexus-darknet serve (
./nexus-darknet serve) which runs on :8800, OR start nexus-hydra
Studio shows "No items"¶
- Deck reads from its own encrypted store (
~/.local/share/char-gen-cli/storage/.../data/characters/) - NOT the PNG files in
~/01/ai-characters/ - To populate: create characters via the Studio's Character Generator, or import from
adv-go-char-gen - The two apps share the same data dir
~/.local/share/char-gen-cli/— characters created inadv-go-char-genappear here after being saved to the encrypted store
3. adv-go-char-gen (char card editor/chat)¶
Location: ~/Projects/adv-go-char-gen/
Build: cd ~/Projects/adv-go-char-gen && go build -o adv-go-char-gen .
Run: CARDS_DIR=~/01/ai-characters ./adv-go-char-gen (best in foot outside tmux for sixel)
Repo: github.com/hackenstacks/adv-go-char-gen (PUBLIC, AGPLv3)
Status: dev branch, commit eb58247 (model field), up to date with remote.
Bugs Fixed This Session¶
- API Settings list not rendering — list initialized at
0,0. Fixed:list.New(providers, delegate, 70, 20). - List navigation broken —
m.providerList.Update(msg)never called. Fixed: addedif providerListViewbranch in Update. - Custom LLM missing model field — added
customModelInputtextinput to custom provider form. Tab order: Name → Type → Model → API Key → URL. Saves toDefaultLLMModel. Pre-fills on re-entry. Commiteb58247. /memorycommand error —RetrieveMemories()called with empty string query, but func validatesquery != "". Fixed: passcardNameas query. Build clean.
Custom LLM Setup (aichat)¶
- Provider: Custom LLM API 🔧
- Name:
aichat(or any name) - Type:
llm - Model: your model name (e.g.
qwen2.5-coder,llama3) - API Key: empty (aichat handles auth)
- URL:
http://127.0.0.1:8080(aichat --serve default) - Code auto-appends
/v1if missing, then hits/v1/chat/completions
Mock Provider¶
ProviderMock = offline fake provider for testing. Returns "Mock response for: '...' (model: mock-llm-fast)". Disables auto-image generation in chat. If chat responses look canned, you're on Mock — go to API Settings and set a real provider as default with Ctrl+S.
4. Thunar + GTK¶
- Official NeXuS GUI FM: PCManFM decision updated — Thunar confirmed (
thunar-volman,thunar-archive-pluginavailable). - Custom actions:
~/.config/Thunar/uca.xml— age encrypt/decrypt + Open Terminal Here (fixed tofoot) - GTK theme:
~/.config/gtk-3.0/settings.ini— was broken (gtk-theme-name= KDE error string). Fixed toadw-gtk3. - gvfs: installed but Thunar not auto-seeing external drives. Likely gvfsd not running or
DBUS_SESSION_BUS_ADDRESSnot set. Pending: add/usr/lib/gvfs/gvfsd &+thunar --daemon &to labwc autostart.
5. Open Tasks (priority order)¶
| # | Task | Where |
|---|---|---|
| 1 | Wire Ghost Gate issue/revoke to gate_state.json |
nexus-darknet-go/tui/app.go execGhostCmd() |
| 2 | ipfs init + bind to localhost |
run once, edit ~/.ipfs/config |
| 3 | Git init nexus-darknet-go | .gitignore → git init → checkout -b dev |
| 4 | Fix gvfs/Thunar auto-mount | add gvfsd + thunar --daemon to labwc autostart |
| 5 | Commit /memory fix in adv-go-char-gen |
git add rawchat.go && git commit |
| 6 | Doctor tab real health checks | nexus-darknet-go/tui/tab_doctor.go |
| 7 | Jurisdiction tab stubs | nexus-darknet-go/jurisdiction/applier.go |
| 8 | Mount sdb1 (WD Passport) | doas blkid /dev/sdb1 → mount |
NeXuS: Sane • Simple • Secure • Stealthy • Beautiful Author: hackenstacks — hackenstacks@gmail.com