| name | anu-wall |
| description | Push a tmux pane — your own, a specific one, a whole window, or a swarm — onto the anu wall, the system wall provider's browser display (default system.aadarwal.com, served across your own Tailscale devices, not the open internet), and list or pull panes off it. Use when asked to show / put / push / mirror a pane or your work on the wall / screen / display / system.aadarwal.com, to surface an agent's pane on the big screen, or to take something off the wall. Tools — spane (pushes focused/window/swarm, opens the wall) and the wall backend ${SYSTEM_CMD_NS}.pane (ls and rm; default aadarwal.system.pane) — both on your PATH. |
anu-wall: push panes to the wall
anu's wall is the browser display served by the system wall provider (the
home server). For this user it lives at http://127.0.0.1:8091/panes/, reachable
as system.aadarwal.com across your own Tailscale devices — not the open
internet. It mirrors live tmux panes in a grid of pages × {left, right} slots.
Push a pane to it so the human can watch an agent work on a big screen.
The provider is configurable; the values below are this user's defaults:
SYSTEM_CMD_NS — backend command namespace (default aadarwal.system, so the
backend binary is aadarwal.system.pane); SYSTEM_PANES_URL — the wall URL
spane open launches (default https://system.aadarwal.com/panes/);
SYSTEM_HOME_URL — the provider's base URL (default https://system.aadarwal.com).
The aadarwal.system.pane examples below assume the default namespace.
Push (the common move)
spane focused
spane focused %82
spane window
spane swarm
Flags: --name "<label>" (title it), --page N + --slot left|right (grid slot),
--replace (overwrite that slot), --name-prefix (window/swarm). spane is on
your PATH — it's the tmux-aware pusher.
See it / list / pull off
spane open --print
aadarwal.system.pane ls
aadarwal.system.pane rm %82
The agent-facing spane binary pushes (focused/window/swarm) and
opens — it has no rm/ls. List and remove are the backend
aadarwal.system.pane ls / rm (also on your PATH). (A human's interactive
shell also has spane push/rm/ls wrapping the same backend; as an agent, push
with spane focused… and manage with aadarwal.system.pane ls/rm.)
Typical flows
- "Show me what you're doing / put this on the wall" →
spane focused.
- "Put the whole team / window up" →
spane swarm (or spane window).
- "What's on the wall?" →
aadarwal.system.pane ls.
- "Take it off" →
aadarwal.system.pane rm <%pane> (find it via ls).
Federate a TUI dashboard (pd / review)
anu's TUIs surface on the wall the same way as any pane — they just need a
persistent pane to mirror (the pd/review fzf popups are ephemeral). Two
spane subcommands fuse "open the persistent dashboard pane" + "push it" into
one idempotent command:
spane pd
spane review
Each opens a detached, self-refreshing pane once (stashed on the window as
@pd_wall_pane / @reviewd_wall_pane, reused on repeat calls) and pushes it
named pd: <repo> / review: <repo>. Manage them like any wall pane
(aadarwal.system.pane ls / rm).
Native cards (forward-looking): pd --json emits the dashboard's data model
({schema, kind:"pd", repo, branch, default_branch, branches[], worktrees[], swarms[]}) as valid JSON — the structured source a future system card renders
natively instead of mirroring the terminal. spane pd is the mirror-today
path; pd --json is the data the card-renderer-tomorrow consumes.