Skip to content
AMagicPearPublic

About

A lightweight GUI for your Pi Agent.

Topics

Resources

Stars

89 stars

Watchers

0 watching

Forks

Repository files navigation

pichamber

A browser-based workspace for the Pi Coding Agent. Vue 3 + Bun thin shell wrapping pi with a real shell terminal.

Install from npm

Requires Bun (the backend runs on it).

bun i -g @amagicpear/pichamber

Run pichamber --help for all options.

pichamber open                # open the current workspace
pichamber open ../another-project
pichamber --json open         # print the session URL as JSON without opening a browser
pichamber status              # inspect the background server
pichamber logs -f             # follow server logs
pichamber stop                # stop it cleanly

# Foreground mode for debugging, containers, or an SSH tunnel
pichamber serve --host 127.0.0.1 --port 3000

State and logs are stored under ~/Library/Application Support/pichamber on macOS, $XDG_STATE_HOME/pichamber on Linux, and %LOCALAPPDATA%\\pichamber on Windows. Set PICHAMBER_STATE_DIR to override that location or PICHAMBER_PORT to change the default port.

Diagnostics and privacy

pichamber keeps local diagnostic events to make intermittent failures actionable. Server events are stored as rolling JSONL files under the state directory's logs/ folder; browser events are retained in IndexedDB. Nothing is uploaded automatically.

Use Settings → Diagnostics → Export diagnostic report to download a report containing recent browser and server events for a bug report. The report excludes conversation content, thinking, tool input/output, credentials, and environment-variable values. Review an export before sharing it. A renderer crash cannot write a final browser event, but the report preserves the events recorded before the crash and marks an unclean previous page lifetime when the browser can detect one.

Develop

A monorepo workspace using Bun workspaces.

Acknowledgements

License

pichamber is MIT — see LICENSE. Bundled third-party packages (pi-coding-agent, markstream-vue, mermaid, katex, vue, monaco-editor, catppuccin-vsc-icons, and others) are listed with their respective licenses in THIRD_PARTY_LICENSES.md; the upstream LICENSE files ship in node_modules/<package>/LICENSE after bun install.

Project structure

pichamber/
├── package.json              # workspace root, dev orchestration scripts
├── tsconfig.json             # references all packages
├── .oxlintrc.json            # lint config applied to all packages
├── bun.lock
└── packages/
    ├── web/                  # Vue 3 + Vite frontend (@amagicpear/pichamber-web)
    └── server/               # Bun HTTP server (@amagicpear/pichamber-server)
Package Stack Purpose
@amagicpear/pichamber-web Vue 3 (rc) · Vite · Pinia · Vue Router Browser SPA
@amagicpear/pichamber-server Bun runtime HTTP server

Remote-host and Pi runtime decisions are documented in docs/architecture.md.

Prerequisites

Setup

bun install

This installs all workspaces' dependencies in one pass thanks to Bun workspaces.

Daily scripts

Run from the repo root:

# Start web dev server (Vite, http://localhost:5173) AND server (Bun, http://localhost:3000)
bun run dev

# Start them individually
bun run dev:web
bun run dev:server

# Build everything
bun run build

# Type-check all packages (uses project references)
bun run type-check

# Run focused logic tests
bun run test

# Lint everything with oxlint
bun run lint

Per-package scripts use Bun's --filter:

bun --filter @amagicpear/pichamber-web dev
bun --filter @amagicpear/pichamber-server start

Conventions

  • Vue 3 + Vite + Pinia + Vue Router conventions live in packages/web/.
  • The server uses Bun's native Bun.serve() HTTP runtime — keep imports Bun-compatible.
  • Use TypeScript path aliases within a package (e.g. @/* → packages/web/src/*).

Type-checking with project references

The root tsconfig.json references each package via project references. To type-check everything:

bun run type-check

This uses tsc --build under the hood for each package.

Linting

oxlint is configured at the root and scans the workspace. Run:

bun run lint

About

A lightweight GUI for your Pi Agent.

Topics

Resources

Stars

89 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages