Define a team of specialist agents. Talk to the orchestrator. Planck handles the rest.
How it works
Planner, builder, reviewer — or whatever the workflow demands. Declare roles, prompts, and tools in a TEAM.json.
Each agent runs as an OTP process. Delegation, responses, and interrupts flow as BEAM messages — no queues, no glue code.
One conversation. The orchestrator breaks the goal into tasks, delegates to specialists, and reports back when done.
The stack
Typed LLM provider abstraction. Anthropic, OpenAI, Google Gemini, and any OpenAI-compatible endpoint — one API.
planck_agentOTP multi-agent runtime. Each agent is a supervised GenServer. Teams live and die together.
planck_headlessThe engine. Sessions, teams, resources, and config. Build your own interface on top.
planckWeb UI + HTTP API wrapped in a Burrito binary. Drop it on any machine, no Elixir required.
Get started
On macOS, if Gatekeeper blocks the binary, the install script removes the quarantine flag automatically.
If you downloaded manually: xattr -d com.apple.quarantine /path/to/planck
Self-hosted
Run the full Planck stack on your own hardware. One command installs a complete environment: private web search, workspace indexing, document extraction, long-term memory, a credential proxy, and more. Requires Docker.
Binds to 127.0.0.1:4000 by default.
Pass --bind=0.0.0.0 (Linux/macOS) or
-Bind 0.0.0.0 (Windows) to expose on the network.
Private meta-search. Web results without sending queries to third parties.
Full-text search over your workspace files. Agents search before they fetch. Session turns are indexed for long-term memory.
PDF, DOCX, XLSX, PPTX and more — extracted to plain text for agents to read.
HTTPS credential proxy. API keys are injected into outbound requests by host — agents never see secrets, even via the bash tool.
Past session turns are retrieved on resume and injected into context. The agent remembers previous conversations.
Key facts and summaries are kept in a per-agent store that survives compaction and is injected at the start of every turn.
Pages are fetched and converted to clean Markdown before being handed to the agent. Results are cached in Typesense — repeated fetches within a session are instant.
After each turn the sidecar captures reusable patterns as skills. The agent becomes progressively more efficient over time.