Your Pi agents, on your machines, open from anywhere.
Pipoca is a self-hosted home for Pi coding agents, for you and your team. Sessions run on your laptop, a VM or Kubernetes with your own Pi setup, and every feature is a plugin you can turn off, swap or write.
brew install pedroklein/pipoca/pipocaRead the docsThen run pipoca up in the folder with your code. macOS and Linux, plus a desktop app.
pipoca.example.comlaptop · acme-shop · pipoca/3f9c2a1dWorkingDoneRead src/checkout/cart.tsEdited src/checkout/coupon.ts +38 −4Ran bun test 42 passedCheckout now takes a coupon code. Unknown and expired codes show an inline error, and the total updates as you type. I added 6 tests, and all 42 pass.
coder-largesrc/checkout/coupon.ts + export function applyCoupon( + cart: Cart, code: string, + ): Result<Cart> { - return cart.total; + const c = coupons.find(code); + if (!c) return err("unknown");Create PR
A small core.
Everything else is a plugin.
Pi keeps its core small and lets extensions do the rest. Pipoca does the same for the server and the web app: Projects, the diff view, routines, team usage and single sign-on are all plugins. Turn off what you don't need, install more from a git repository, or ask the assistant to write one.
projectsProjects with a coordinator and threads, and the assistant.changesThe diff, line comments and pull requests.subagentsHelpers Pi starts, workflows and missions.checklistA live task list in every Session.diagramsMermaid diagrams drawn right in the chat.askPi's questions to you, and votes in team work.routinesSchedules, events, webhooks and wake-ups.artifactsPages Pi publishes, with versions and comments.filesSession outputs and uploads, kept on the server.slackSlack messages as triggers, and posts from Sessions.emailMail as triggers, and mail from Sessions.modelsModel aliases per Environment, with fallbacks when a model fails.loginsModel and MCP logins kept on the server, and the team's key proxy.usageTokens and cost, team budgets and the audit log.oidcSingle sign-on with OpenID Connect providers.localRunners on the server's own machine.kubernetesRunner pods on demand, deleted when idle.git-hostsGit host accounts, technical users and GitHub Apps.pushNotifications on phones and desktops.Write your own in one folder
- Server part. Routes, tools, schedules, events and its own tables.
- Web part. Pages, panels for the team hub, setup steps and settings, built from Pipoca's own components.
- Session part. Pi extensions, commands and tools in every Session.
export const session = defineSession(greeter, (s) => { s.extension((pi) => { pi.registerCommand("greet", { description: "Say the greeting from config", handler: async (_args, ctx) => { const { greeting } = await s.api.get("greeting"); ctx.ui.notify(greeting, "info"); }, }); }); });
One hub where your team and Pi work together
Team work is open to everyone on the server by default. Anyone can start it, follow it or step in, and Pi reads the team's conversation, not just the last message. It runs on the team's Profiles, Environments and keys, so nobody lends their own.
$412 of $600Move the Stripe webhooks to the v2 events and keep the old ones until Friday.
Careful, the refund handler retries on its own.
Diego is right: refunds retry three times with backoff, and Stripe's v2 events retry too.
Your Pi setup, on every machine
A Profile is a Pi agent folder, like your ~/.pi/agent: packages, skills, prompts, instructions, MCP servers and settings. Import yours from a folder, a tarball or a git repository, and every Session runs with it, wherever it runs. Keep one for reviews, one for docs, one for the team.
company skillsan MCP serverAGENTS.mdyour packagesyour loginsa review skillits own promptall of it, with sourcesminus what you turned off

Hand off the work. Come back to it from anywhere.
Sessions that keep going when you close the tab
Each Session gets its own worktree or clone on its own branch, so several can work in one repository at once. Pi's steps fold into one line, and the header shows context use and cost.
Read more

Review the diff, comment on lines, open the pull request
Comment on any line and send every comment back to Pi as one message. Pipoca watches the pull requests your Sessions open and can fix failing checks.
Read more

Pi's own terminal UI, one click away
The Pi tab runs Pi's terminal UI for the same Session, so extensions that only work in a terminal still work. Terminals open shells in the Session's folder and survive reloads.
Read more

Split bigger work across threads
Talk to a Project's coordinator. It starts a thread for each piece of work, shares memory and a folder of files with them, and puts the ones that need you first.
Read more

Runs where your work is
Start on your laptop. Move the server to a VM when you want it always on. Bring your team, or run it in Kubernetes.
localhoststartsbrew install pedroklein/pipoca/pipoca cd ~/code && pipoca up
ssh tunnelstartscd ~/code && pipoca connect me@my-vm
HTTPSper personpipoca server --url https://pipoca.example.com
HTTPScreateshelm install pipoca deploy/helm/pipoca \ --set url=https://pipoca.example.com
Start in a minute
helm install pipoca deploy/helm/pipocaKubernetes setup