pi-outpost
A web interface for the pi coding agent: a browser chat UI you run with npx — no clone, no build.
Package details
Install pi-outpost from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:pi-outpost- Package
pi-outpost- Version
0.26.0- Published
- Sep 15, 2026
- Downloads
- 5,195/mo · 784/wk
- Author
- laurentftech
- License
- MIT
- Types
- package
- Size
- 85.9 MB
- Dependencies
- 5 dependencies · 0 peers
Pi manifest JSON
{
"image": "https://raw.githubusercontent.com/laurentftech/pi-outpost/main/docs/screenshots/chat-light.png"
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
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 ≥ 24 and a model credential (~/.pi/agent/auth.json, a provider variable
like ANTHROPIC_API_KEY, or the setup screen). The default embedded runtime already carries
the pi coding agent; a separate pi executable is
needed only when agentRuntime.mode is "rpc".
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) |
--offline |
Never fetch remote model catalogs |
--open / --no-open |
Whether to open the interface once listening |
--open-in window|browser |
Open in a standalone window (default) or a browser tab |
Environment: PI_OUTPOST_PORT (falls back to PORT), PI_OUTPOST_HOST,
PI_OUTPOST_CWD, PI_OUTPOST_AGENT_DIR, PI_OUTPOST_TOKEN, PI_OFFLINE.
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
