One machine, the containers on it and the Claude Code sessions running there — in your hand.
Not a dashboard. The panel does not only show containers, load and live sessions: it runs them.
A container is unhealthy, a disk is filling up, a session has been waiting an hour for an answer to a question nobody read. All of it is fixed by a few motions — restart this, answer that, look at the log — and none of them are worth getting to a desk for.
So the panel is built for a phone first: one thumb, one hand, no keyboard. The same page on a monitor spreads into columns and opens a terminal, because the work that is worth a desk is the work you already sat down for.
Grouped by stack, with health and the load each one takes. Up, down, restart — and the log right there.
Every live session with how much of its context is spent. Open one, write into it, answer what it asks, close it.
The feed of a session as it happens: what it read, what it changed, what it ran. Its questions come with the buttons to answer them.
The real screen of the session, not a copy of it. Type into it from the same page you were just reading.
Processor, memory, disks, network, the probes it runs. Rules watch the numbers and reach the phone when one of them stops being normal.
Send a photo or a document into a session, take what it produced back out — without a laptop in between.
The panel holds no rights on the machine. It asks, and something else decides — which is what makes it safe to open from outside at all.
One Go binary, the front end built into it, the schema travelling with it. No access to the host: it asks for actions rather than performing them.
The only thing that acts. It takes a named action over a socket, checks it against what it is allowed to do, and writes down what happened.
Reads and never writes: load, disks, processes, live sessions and how full their context is.
The panel is put on the machine it manages. There is no service to sign up for, nothing calls home, and the data stays where it was made.
# clone, describe the machine, bring it up git clone <repository> aacpanel && cd aacpanel cp deploy/host.env.example /var/lib/aacpanel/host.env cp .env.example .env docker compose up -d
The steps in full — the state directory, the secrets, the application role, the units, the way in from outside — are in INSTALL.md, written to be followed from the top down on a machine that has nothing on it yet.