cookbook / plane
Plane
A self-hosted Linear/Jira-like board the agent can update, with a link to share.
- app
- stack
Run it
briq_run({
recipe: "plane",
params: {
"domain": "localhost",
"size": "small"
},
wait: true
})briq run plane
briq ls
briq logs -f <id>
briq rm <id>import { Briq } from '@briq/sdk';
const briq = new Briq(process.env.BRIQ_API_KEY);
const plane = await briq.run({
recipe: 'plane',
params: {
"domain": "localhost",
"size": "small"
},
});
console.log(plane.outputs.PLANE_URL);
// ... when done
await briq.destroy(plane.id);Parameters
| Name | Type | Options | Default |
|---|---|---|---|
| domain | string | — | "localhost" |
| size | enum | small, medium | "small" |
Outputs
Returned by briq_run once the stack is healthy. Hosts resolve inside your team network; secrets are generated per run.
- PLANE_URL
- http://plane.<stack>.internal
- PLANE_DOMAIN
- localhost
What it runs
| Briq | Image | Ports | Size | Volume |
|---|---|---|---|---|
| postgres | postgres:16 | 5432 | nano | 10 GB at /var/lib/postgresql/data |
| redis | redis:7-alpine | 6379 | nano | — |
| rabbitmq | rabbitmq:4-alpine | 5672 | nano | — |
| minio | quay.io/minio/minio:RELEASE.2025-09-07T16-13-09Z | 9000 | nano | 20 GB at /data |
| plane | makeplane/plane-aio-community:stable | 80 | small | — |
When to use it
- The agent is working off a PLAN.md that only it reads, and you want the same plan as a board: columns, status, and a link you can actually watch while the agent works.
- You want the agent to self-organize a multi-step task — file an issue per step, move it as it finishes, comment on what it found — instead of editing a checklist in a text file no one else opens.
- You want to hand a teammate a link, not a diff of a markdown file, to see where things stand.
This is a stack, not a single service: makeplane/plane-aio-community needs its own Postgres,
Redis, an AMQP broker and S3-compatible storage. The recipe runs all five as one call — Postgres,
Redis and RabbitMQ with auth disabled and no port to briq_expose, MinIO for uploads with a
generated secret shared with the app.
Tips
- Set
domainbefore you expose it.DOMAIN_NAMEis baked in at boot and used in the links Plane generates. If you already know the hostname you willbriq_exposeon, pass it asdomain; otherwise expose first, note the hostname, and re-run with it. - First boot takes longer than the others. The app briq runs a database migration before it
starts serving;
wait: trueaccounts for this, but give it a minute on a cold start. - Only
briq_exposetheplanebriq, on port 80. Postgres, Redis and RabbitMQ run with no password and no port to expose; treat that as internal-only and never callbriq_exposeon them. - The agent updates it through the same web API a human would use — Plane has a REST API and API-key auth once you have signed in through the exposed URL once to create the first workspace.