Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Description from the maker (original English)
Self-hosted MCP server: pi-coding-agent tools (run_prompt, file ops) over streamable HTTP.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"pibox": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"docker.io/psyb0t/pibox:v0.21.0"
]
}
}
}Run this in your terminal
claude mcp add pibox -- docker run -i --rm docker.io/psyb0t/pibox:v0.21.0Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"pibox": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"docker.io/psyb0t/pibox:v0.21.0"
]
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"pibox": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"docker.io/psyb0t/pibox:v0.21.0"
]
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 7, 2026
The registry name was verified with the GitHub account psyb0t, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
The registry does not list a required key, though some servers ask you to sign in on first use.
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed –, and the latest version (0.21.0) reached the registry 14 days ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Docker on your computer.
In the same category: Spec Driven Development, Remote Desktop Commander, Intervals MCP
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Remote MCP server for intervals.icu run data and analysis
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
pi-coding-agent inside an aicodebox container. One image, several ways in: interactive shell, one-shot prompt, HTTP API (with an OpenAI-compatible endpoint), MCP server, Telegram bot, and a cron scheduler that fires pi on whatever schedule you want.
You talk to pibox. pibox talks to pi. pi talks to whatever LLM you point it at. Nobody cares about the middle.
pibox wrapperInstall the host wrapper.
curl -fsSL https://raw.githubusercontent.com/psyb0t/docker-pibox/main/install.sh | bash
curl -fsSL https://raw.githubusercontent.com/psyb0t/docker-pibox/main/install.sh | PIBOX_FULL=1 bash
The installer creates the Pi, pibox state, and SSH directories, pulls the selected image, and installs pibox on PATH. The minimal image is the default. PIBOX_FULL=1 on the bash side of the pipe selects the full image and bakes that choice into the installed wrapper.
Install pibox, codexbox, and claudebox in the same command directory, normally /usr/local/bin, when you want one box to launch another. Each wrapper finds the sibling wrapper files there and mounts them read-only into its container. A sibling then runs through the host Docker daemon and mounts its own host data directory.
pibox wrapperRun pibox from the directory you want Pi to work in. The wrapper mounts that directory at the same absolute path inside the container, persists ~/.pi, ~/.aicodebox, and ~/.ssh/pibox, forwards PIBOX_* configuration, and passes Pi arguments through unchanged.
# interactive Pi in the current directory
pibox
pibox -p "list the files in this workspace"
ANTHROPIC_AUTH_TOKEN=your-token \ ANTHROPIC_BASE_URL=https://api.z.ai/api/anthropic \ ANTHROPIC_MODEL=glm-4.6 \ pibox -p "explain this project"
pibox --help
PIBOX_FULL=1 pibox -p "run the test suite"
The wrapper is also the normal way to start a long-running mode. PIBOX_DETACH=1 makes the named container run in the background.
PIBOX_DETACH=1 \
PIBOX_API_MODE=1 \ PIBOX_API_MODE_TOKEN=your-secret \ PIBOX_AVAILABLE_MODELS=glm-4.6,glm-4.5-air \ ANTHROPIC_AUTH_TOKEN=your-token \ ANTHROPIC_BASE_URL=https://api.z.ai/api/anthropic \ ANTHROPIC_MODEL=glm-4.6 \ pibox
Use raw docker run only when you intentionally do not want the host wrapper. The wrapper is the normal interactive and service entry point.
The installed wrapper is the normal interface for people and agents. An agent should run pibox from the requested workspace instead of assembling a new docker run command. The wrapper preserves the workspace path, Pi state, aicodebox state, SSH state, image choice, and container lifecycle.
pibox -p "inspect this workspace and report the failing tests"
PIBOX_FULL=1 pibox -p "run the full test suite" pibox -p "list the files" --thinking high
When one box needs another, install pibox, codexbox, and claudebox in the same command directory. A running box can call the sibling command directly. The parent wrapper passes the host launch context and mounts only the sibling wrapper file. Do not set AICODEBOX_HOST_*, copy a wrapper, or manually mount another box's state directory.
psyb0t/pibox:latest is the minimal image.psyb0t/pibox:latest-full starts from the shared aicodebox:latest-full base, then adds Pi and pibox. It carries the shared development toolchain without rebuilding it in this repository.Foreground modes (API / Telegram / Cron) are mutually exclusive — except PIBOX_TELEGRAM_MODE=1 + PIBOX_CRON_MODE=1, which run together (cron in-thread inside telegram). API wins if set alongside anything else.
MCP mode (PIBOX_MCP_MODE=1) is independent — it coexists with whatever foreground mode is running. In API mode it's mounted at /mcp/ on the API port (slashless /mcp reaches the same handler); in other modes it runs as a sidecar uvicorn on its own port, serving at the port root.
Each mode has its own page with full setup, env vars, and examples.
Long-lived FastAPI server on :8080. Agent runs (sync, async with run-id polling, cancellable), workspace file upload/download/list/delete with traversal checking, and an OpenAI-compatible chat/completions endpoint with streaming and client-executed tool calling.
environment:
Talk to pi from Telegram. Per-chat isolated workspaces, allowed-chats and per-chat allowed-users gating, file ingestion, [SEND_FILE: path] to get files back, and per-chat /model, /effort, /system_prompt, /append_system_prompt overrides that persist across restarts.
environment:
YAML-defined scheduled jobs on 6-field croniter schedules. Per-run history dirs with meta.json, stdout.log, stderr.log, result.txt, and a "prior run" hint so a job can reference its own history.
environment:
Exposes run_prompt plus workspace-confined file tools over streamable HTTP, so other agents can drive pi as a tool. Coexists with any foreground mode — mounted at /mcp/ on the API port in API mode, a sidecar on its own port everywhere else.
environment:
Set PIBOX_GIT_NAME and PIBOX_GIT_EMAIL on the host to configure the runtime user's global Git identity before startup hooks. Direct container deployments accept the same names. Nonempty AICODEBOX_GIT_NAME and AICODEBOX_GIT_EMAIL inside the container take precedence; through the wrapper, supply those shared values as AICODEBOX_ENV_AICODEBOX_GIT_NAME and AICODEBOX_ENV_AICODEBOX_GIT_EMAIL. Empty settings preserve existing Git config. Multiline values are rejected.
make version V=X.Y.Z synchronizes package metadata, lockfile, the Codex plugin manifest, and the installer's wrapper release ref without committing or tagging. Remote installs download the matching release wrapper unless PIBOX_INSTALL_REF overrides it. Updating an image does not update an installed wrapper.
Naming convention: PIBOX_ _MODE=1 is the on/off flag, PIBOX_ _MODE_ =... is its config. Non-mode-scoped vars (workspace, container name, available models) are bare.
The image is built on top of aicodebox, so the equivalent AICODEBOX_* names also work — the entrypoint translates PIBOX_X to AICODEBOX_X when only the pibox-prefixed one is set. If you set both, AICODEBOX_* wins.
Set the upstream endpoint URL, protocol, API key or token, and model with LLM providers. PIBOX_PROVIDER_* supports Pi's documented OpenAI, Anthropic, and Google custom HTTP APIs. The ANTHROPIC_* variables below remain a compatibility path for existing Anthropic-compatible deployments.
| Var | Default | What it does |
|---|---|---|
PIBOX_API_MODE | 0 | Boot the HTTP API server (foreground) |
PIBOX_TELEGRAM_MODE | 0 | Boot the Telegram bot (foreground) |
PIBOX_CRON_MODE | 0 | Boot the cron scheduler (foreground; in-thread when telegram is also on) |
PIBOX_MCP_MODE | 0 | Expose MCP — mounted at /mcp/ in API mode, or as a sidecar elsewhere |
Each mode's own knobs (ports, tokens, config paths, history dirs) live on that mode's page: api.md, telegram.md, cron.md, mcp.md.
| Var | Default | What it does |
|---|---|---|
PIBOX_WORKSPACE | /workspace | Root workspace dir inside the container |
PIBOX_CONTAINER_NAME | aicodebox | Used to scope per-container state files (auth, etc.) |
PIBOX_AVAILABLE_MODELS | — | Required for API mode. CSV list returned by /openai/v1/models and shown in the telegram /model picker. pibox registers every listed model with the upstream provider under PIBOX_PROVIDER_API. API mode refuses to boot without it; telegram /model picker degrades to a "set this env var" reply. |
PIBOX_AVAILABLE_EFFORTS | adapter list | Override the effort/--thinking list shown by the telegram /effort picker (comma-separated) |
PIBOX_DATA_DIR | ~/.pi | Host Pi configuration, auth, extensions, and sessions directory |
PIBOX_STATE_DIR | ~/.aicodebox | Host pibox mode configuration and history directory |
PIBOX_SSH_DIR | ~/.ssh/pibox | Host SSH directory mounted into the container |
PIBOX_IMAGE | installed image | Override the image selected by the installed wrapper |
PIBOX_FULL | installed choice | 0 selects minimal and 1 selects full |
PIBOX_DETACH | 0 | 1 starts a named background container instead of a disposable foreground container |
PIBOX_ENV_* | none | Forward a pibox environment variable into the container |
PIBOX_MOUNT_* | none | Add a same-path or host:container bind mount |
AICODEBOX_ENV_* | none | Forward a shared environment variable into the launched container, with the prefix stripped |
AICODEBOX_MOUNT_* | none | Add a shared same-path or host:container bind mount to the launched container |
Automation can install the wrapper in another command directory with PIBOX_INSTALL_DIR and PIBOX_BIN_NAME. The installed wrapper accepts the versioned AICODEBOX_HOST_* nested-launch context. It uses those host paths as Docker bind sources, makes available sibling wrappers, and applies shared AICODEBOX_ENV_* and AICODEBOX_MOUNT_* values to the child container.
Under PIBOX_STATE_DIR (~/.aicodebox by default):
bin/ are on PATH ahead of everything else, for pi in every mode, for init scripts, and for docker exec shells.init.d/*.sh run once per container, after the image's own init scripts, as aicode with passwordless sudo. A failing script is logged and the rest still run. A new container runs them again, so make them safe to repeat.For Anthropic-compatible endpoints, use the compatibility variables below. For LiteLLM or another OpenAI-compatible endpoint, use generic provider configuration.
| Var | Purpose | |
Only the beginning is shown; read the rest in the repo