---
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)

```bash
spane focused                 # push THIS pane (your own) — "show my work on the wall"
spane focused %82             # push a specific pane
spane window                  # push every pane in the current window
spane swarm                   # push every swarm agent's pane (reads @swarm_panes)
```

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

```bash
spane open --print            # print the wall URL (drop --print to open a browser)
aadarwal.system.pane ls       # list what's on the wall now: page slot %pane title
aadarwal.system.pane rm %82   # pull a pane OFF the wall (or: rm --page N --slot left|right)
```

> The agent-facing `spane` binary **pushes** (`focused`/`window`/`swarm`) and
> `open`s — 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:

```bash
spane pd       # mirror the project dashboard (branches/worktrees/swarms) as a wall pane
spane review   # mirror the review dashboard (divergent branches per agent) as a wall pane
```

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.
