pi-outpost
v0.6.4
Published
A web chat UI for the pi coding agent — run it with npx, no clone, no build.
Maintainers
Readme
pi-outpost
A web chat UI for the pi coding agent — streaming replies, collapsible thinking, live tool cards (bash, edit, …), a file browser, git integration, and a conversation tree you can branch from.
npx pi-outpost init # writes a starter pi-outpost.config.json here
npx pi-outpost # http://127.0.0.1:3141/Requires Node ≥ 22.19 and pi configured (~/.pi/agent/auth.json, or a provider variable like ANTHROPIC_API_KEY).
It will not start without a configuration file
That is deliberate. The config decides the agent's working directory, which tools it gets, and whether it can write files or run bash — and inferring that from whatever directory you happen to be standing in is not a decision anyone wants made for them. init writes the safe version (read-only, no bash) for you to open up as needed.
Configuration
The first of these that exists is read, and only that one — configurations are never merged, so the file you are reading is the configuration that is running:
--config <path>--profile <name>→<user config dir>/profiles/<name>.json$PI_OUTPOST_CONFIG$PI_OUTPOST_PROFILE→<user config dir>/profiles/<name>.json./pi-outpost.config.json<user config dir>/config.json
<user config dir> is $XDG_CONFIG_HOME/pi-outpost, or ~/.config/pi-outpost. Not sure which one won, or why a setting has the value it has? pi-outpost config prints the resolved configuration and the file it came from, without starting anything.
Profiles let you configure once and run anywhere: pi-outpost --profile work reads ~/.config/pi-outpost/profiles/work.json, from any directory. A profile is an ordinary config file.
Precedence, for any setting that appears in more than one place: flag > environment variable > config file > default.
| Flag | Effect |
|------|--------|
| --config <path> | Configuration file to use |
| --profile <name> | Named profile from the user config directory |
| --cwd <dir> | Directory the agent works in |
| --agent-dir <dir> | pi config/session store (default ~/.pi/agent) |
| --port <n> / --host <addr> | Where to listen (default 127.0.0.1:3141) |
Environment: PI_OUTPOST_PORT (falls back to PORT), PI_OUTPOST_HOST, PI_OUTPOST_CWD, PI_OUTPOST_AGENT_DIR, PI_OUTPOST_TOKEN.
Security
The agent has file and (optionally) bash tools. The server binds to 127.0.0.1 by default and validates the WebSocket Origin.
- There is no
--tokenflag on purpose: a secret on the command line is readable by anyone who can list processes. UsePI_OUTPOST_TOKENor the file'sserver.token. - Binding off loopback (
--host 0.0.0.0) requires a token — the server refuses to start otherwise, because the agent's tools would be reachable by anything that can route to the host. - Sandbox the agent (
sandbox.root,allowWrite,allowBash) for anything beyond your own machine. The effective sandbox is printed at every start.
Full documentation: github.com/laurentftech/pi-outpost.
License
MIT
