Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
Self-hosted MCP server: pi-coding-agent tools (run_prompt, file ops) over streamable HTTP.
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
ต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"pibox": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"docker.io/psyb0t/pibox:v0.21.0"
]
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add pibox -- docker run -i --rm docker.io/psyb0t/pibox:v0.21.0วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"pibox": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"docker.io/psyb0t/pibox:v0.21.0"
]
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"pibox": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"docker.io/psyb0t/pibox:v0.21.0"
]
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 6 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub psyb0t ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
registry ไม่ได้ระบุว่าต้องใช้กุญแจ แต่บางตัวจะขอให้ล็อกอินตอนใช้ครั้งแรก
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (0.21.0) เข้า registry 13 วันที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Docker ในเครื่องด้วย
ในหมวดเดียวกันมี Spec Driven Development, Remote Desktop Commander, Whisper
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า 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.
One routable IPv6 per AI agent, verifiable from the DNS root. Keyless tools need no signup.
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
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 | |
ตัดมาแค่ช่วงต้น อ่านต่อใน repo