Skip to content

LLMSystems/picobot

Repository files navigation

picobot

A small, clear, and extensible multi-user Web Agent — chat, call tools, operate a workspace, browse the web, search for information, with each conversation running in an isolated sandbox.

English | 中文

python frontend license status

web0 web1 web2 web3


Features

  • Multi-turn agent core — tool calling, web browsing, and per-session workspace operations
  • Subagent orchestration — delegate tasks to background subagents (spawn / wait / cancel); execution state is persisted and recoverable after reload
  • Multi-user isolation — cookie-based session login and registration; conversations, history, workspace, and user-defined skills are all per-user; cross-user access returns 404
  • exec sandbox — commands run inside bubblewrap, only the session's own workspace is visible, and environment secrets are stripped
  • Role-based access — Dashboard / Alerts / MCP management restricted to admins
  • Dashboard & Alerts — real-time system / agent / API metrics, trend charts, and rule-based alerts
  • Full Web UI — SSE streaming, Markdown (with Mermaid), tool call visualization, workspace file tree, light/dark themes
  • OpenAI-compatible — works with any OpenAI-compatible model, including local ones

Quick Start

Docker (recommended)

The whole stack — browser tooling, exec sandbox, and the built frontend — is baked into the image. You only need Docker.

cp .env.example .env     # fill in OPENAI_API_KEY, SESSION_SECRET, ADMIN_USERNAMES
docker compose up --build

Open http://localhost:8000register an account → start chatting. SQLite and per-session workspaces persist in ./data and ./workspaces.

Manual (local dev)

Requirements: Python 3.11+, Node.js 18+.

System dependencies. The chat / tools / workspace core only needs the Python packages below. Web browsing additionally needs agent-browser + a headless Chrome (and its system libraries), a virtual display (Xvfb), and CJK/emoji fonts; the exec sandbox needs bubblewrap. Full list: docs/configuration.md → System dependencies.

# 1) Backend (Python deps) + .env (see .env.example)
python3 -m pip install -e .

# 2) Start the backend (default :8000)
python3 fastapi_server.py --config example_config.json

# 3) Start the frontend (new terminal; default :5173, proxies to :8000)
cd frontend && npm install && npm run dev

Open http://localhost:5173 → register → chat. For production without Docker, npm run build and point the backend at frontend/dist via PICOBOT_FRONTEND_DIST.

For full configuration (config file, alerts, CLI args, library usage) see docs/configuration.md.


Multi-user & Sandbox

  • Isolation: Each session is bound to its owner; GET /sessions only returns your own. Accessing another user's session / workspace / subagent always returns 404. User-defined skills are per-user; built-in and legacy global skills are shared read-only.
  • Sandbox: When bubblewrap is installed, exec only bind-mounts the session's workspace plus read-only system tools — the project .env, other users' workspaces, and the host home directory are not visible. Secrets are stripped from environment variables, and resource limits are applied.
  • Roles: Admins are specified via ADMIN_USERNAMES and have exclusive access to Dashboard / Alerts / MCP management.

Design details: auth_design.md, exec_sandbox_design.md.


Architecture

Backend: Python (FastAPI + AioSQLite, async). Frontend: Vue 3 + Pinia + Tailwind. The agent loop, tools, runtime, skills, and metrics/alerts are each in their own layer. For the full directory tree and tech stack, see docs/architecture.md.


Docs

  • Configuration — environment variables, config file, alerts, startup, library usage
  • API Reference — endpoints, permissions, SSE events, built-in tools
  • Frontend — UI panels, keyboard shortcuts, layout
  • Architecture — directory tree, tech stack, design document index
  • Evaluation — evaluation methodology and results

Testing

python3 -m pytest tests -q

Contributing

Issues and PRs are welcome. Before submitting a PR, run python3 -m pytest tests -q; for frontend changes, also run npm run build.

License

MIT © 2026 LLMSystems


Acknowledgements

picobot's overall architecture draws inspiration from nanobot — specifically the agent loop, tool calling, skills mechanism, prompt layering, and workspace/runtime-oriented design. picobot takes a narrower scope, is async-first, and has a clear path toward per-session workspaces and multi-user isolation, staying true to the "small and clear, but sustainably extensible" direction.

About

A small, clear, and extensible multi-user Web Agent — chat, call tools, operate a workspace, browse the web, search for information, with each conversation running in an isolated sandbox.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors