Primary question: Can your team run a 13-container stack reliably, and does AGPL-3.0 clear your legal review?
RepoDaily adoption score
RepoDaily rates this as 90/100 (strong) for adoption: evidence, installation path, production risk, differentiation, license clarity, and AI/agent fit are scored from the article sources and adoption notes.
5 source(s) across 3 source category/categories, plus a RepoDaily-specific evidence module when available.
6 workflow step(s), 5 next-action step(s), and 7 command/install signal(s) were detected.
Trending momentum is +577 stars, with maintenance/release/issue signals counted when present.
Risk is marked medium, with 5 security note(s) and 4 explicit skip condition(s).
3 opportunity lens item(s), 6 alternative(s), and 4 type-specific section(s) support differentiation.
License source or license wording is present.
4 AI/agent-related signal(s) were detected in the article text and metadata.
Project overview
Plane (makeplane/plane) is an open-source project management platform whose README frames it squarely as an alternative to Jira, Linear, Monday, and ClickUp. It tracks issues as Work Items with a rich text editor and file uploads, runs sprints under the name Cycles with burndown charts, breaks large efforts into Modules, saves filterable Views that members share, captures notes in Pages with AI capabilities, and reports through real-time Analytics. Version 1.4.1, declared in package.json, ships as a monorepo: the Django backend lives in apps/api while the TypeScript frontends — web, admin, space, live, and proxy — each build from their own Dockerfiles.
The project landed at rank 11 on the trending list with 577 stars this period. The pull is not just the anti-Jira positioning. Plane offers a fully specified self-host path: a docker-compose.yml with pinned infrastructure images, Kubernetes deployment documented at developers.plane.so, managed hosting through Zenith, and a free Plane Cloud account for anyone who wants to skip infrastructure entirely. Few rivals document all four routes.
What separates Plane from lighter trackers is that self-hosting it means running a small distributed system. The Compose file defines thirteen services: six Plane app containers (web, admin, space, api, worker, beat-worker), a live service, a one-shot migrator, and five infrastructure containers — plane-db on postgres:15.7-alpine with max_connections=1000, plane-redis on valkey/valkey:7.2.11-alpine, plane-mq on rabbitmq:3.13.6-management-alpine, plane-minio for object storage, and a proxy that terminates HTTP and HTTPS.
That weight is the honest trade. CONTRIBUTING.md recommends a minimum of 12 GB RAM for local development and warns that 8 GB machines can fail during Docker container builds or dependency installs. The license is AGPL-3.0 per package.json. Neither fact is hidden; both should shape whether you trial Plane on a spare host or start with Plane Cloud first.
Why it is trending now
- 577 stars at trending rank 11 for the period ending 2026-08-22.
- The README names Jira, Linear, Monday, and ClickUp directly — positioning that captures teams re-examining hosted trackers.
- Self-hosting is documented across three routes: Docker Compose, Kubernetes, and Zenith managed hosting.
- The feature set mirrors paid competitors: Cycles with burndown charts, shareable saved Views, and Pages with AI capabilities.
- package.json shows version 1.4.1 under AGPL-3.0, paired with a published SECURITY.md reporting policy — the rhythm of a maintained commercial open-source project.
Problem it solves
- Issues, roadmaps, and docs sit locked inside a vendor's cloud; the README opens by promising project management 'without the chaos of managing the tool itself.'
- Large projects sprawl: Plane answers with Modules, which divide complex projects into smaller, manageable units.
- Sprint momentum is hard to see: every Cycle attaches burndown charts and progress tools.
- Every role wants a different lens on the same backlog: Views let members build, save, and share their own filters.
- Self-hosted trackers historically traded features for control; Plane pitches both — full features on your own servers.
How it works
- Choose a deployment: a free Plane Cloud account, Docker Compose, Kubernetes, or Zenith managed hosting.
- On the Compose path, the proxy container fronts web, admin, and space, forwarding to the Django API.
- api, worker (container bgworker), and beat-worker reuse Dockerfile.api with different entrypoints (docker-entrypoint-api.sh, -worker.sh, -beat.sh); a migrator container applies database migrations once with restart: no.
- plane-db (Postgres 15.7), plane-redis (Valkey 7.2.11), plane-mq (RabbitMQ 3.13.6), and plane-minio provide persistence, cache, queue, and file storage; uploads persist in a named volume.
- An instance admin configures the deployment through God mode at /god-mode/.
- Teams then work in Work Items, run Cycles, group work into Modules, share Views, write Pages, and read Analytics dashboards.
Product demo and interface preview

RepoDaily architecture read: what the 13 containers actually do
The docker-compose.yml is the clearest statement of Plane's shape. Six application containers build from monorepo paths: web (apps/web/Dockerfile.web), admin (apps/admin/Dockerfile.admin), space (apps/space/Dockerfile.space), api (apps/api/Dockerfile.api), and live (apps/live/Dockerfile.live); the proxy uses apps/proxy/Dockerfile.ce. The api, worker, and beat-worker containers reuse Dockerfile.api, differing only in entrypoint scripts — a pattern that keeps backend versions aligned across API serving, background jobs, and scheduled beat tasks.
State lives in four named volumes — pgdata, redisdata, uploads, rabbitmq_data — backed by postgres:15.7-alpine (configured with max_connections=1000), valkey/valkey:7.2.11-alpine, rabbitmq:3.13.6-management-alpine, and minio/minio. The migrator is a one-shot job (restart: no) running docker-entrypoint-migrator.sh before the API serves traffic. The proxy exposes LISTEN_HTTP_PORT and LISTEN_HTTPS_PORT, defaults FILE_SIZE_LIMIT to 5242880 bytes (5 MB), and defaults the MinIO bucket name to uploads.
RepoDaily try-it path: local development from clone to login
- Requirements from CONTRIBUTING.md: Docker Engine installed and running, Node.js 20+ LTS, Python 3.8+, Postgres v14, Redis v6.2.7, and a minimum of 12 GB RAM.
- git clone https://github.com/makeplane/plane.git, then chmod +x setup.sh and run ./setup.sh.
- Start the stack: docker compose -f docker-compose-local.yml up.
- Launch the frontends with pnpm dev — the monorepo is orchestrated by turbo, pinned to pnpm 11.3.0 in package.json.
- Register the instance admin at http://localhost:3001/god-mode/, then log in at http://localhost:3000 with the same credentials.
- Heads-up: package.json engines requires node >=22.18.0 while CONTRIBUTING.md says Node 20+ — install 22.18+ to satisfy both.
Deployment notes: three self-host routes and the admin surface
The README routes self-hosters to developers.plane.so/self-hosting with three methods: Docker Compose, Kubernetes, and managed hosting through Zenith (zenith.hosting/host/plane). God mode is the instance-admin surface referenced both in the README and in the local setup flow at /god-mode/. The Compose path assumes you supply POSTGRES_USER, POSTGRES_DB, POSTGRES_PASSWORD, RABBITMQ credentials, and AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY for MinIO through .env files; the proxy reads LISTEN_HTTP_PORT, LISTEN_HTTPS_PORT, FILE_SIZE_LIMIT, and the bucket name from the same environment.
Capacity planning matters more here than with most trackers: twelve containers are set to restart: always, and the documented 12 GB RAM recommendation covers local development alone, before production traffic. The 5 MB default FILE_SIZE_LIMIT on uploads is another knob to review before real teams attach design files.
RepoDaily maintenance read: versioning, tooling, and requirement drift
- package.json declares version 1.4.1 and license AGPL-3.0 — a copyleft license that usually triggers legal review before embedding Plane into anything distributed.
- The monorepo runs on turbo scripts (build, dev, check, fix) with husky and lint-staged pushing every commit through oxfmt and oxlint --fix --deny-warnings, keeping contributor output consistent.
- CONTRIBUTING.md requires unit-test specs for all features and bug fixes, and a minimal reproduction (repo or Gist) before bugs are investigated.
- Requirement drift is real: CONTRIBUTING.md lists Node 20+, Postgres v14, and Redis v6.2.7, while the production Compose file runs Postgres 15.7 and Valkey 7.2.11 — read the Compose file, not just the docs, when sizing hosts.
- Issue triage is structured: titles must follow prefixes like 🐛 Bug:, 🚀 Feature:, 🛠️ Improvement:, and 📘 Docs:, which keeps the tracker scannable.
Who should pay attention?
Good fit if
- Teams with Docker or Kubernetes capacity and at least 12 GB RAM to devote to a trial.
- Organizations whose data-residency rules require issue data on owned infrastructure.
- Squads that want Cycles with burndown charts without depending on a hosted vendor.
- Contributors who want a documented setup.sh path into a turbo/pnpm monorepo.
Skip for now if
- Solo users or two-person teams — a simpler single-container board costs far less attention.
- Operations groups unwilling to run Postgres, Valkey, RabbitMQ, MinIO, and a proxy together.
- Companies whose legal policy vetoes AGPL-3.0 outright.
- Hosts with 8 GB RAM — CONTRIBUTING.md explicitly warns of setup failures and memory crashes.
Risks and cautions
Plane is documented and versioned like a mature product, but the self-host path means operating thirteen services under AGPL-3.0 on hardware with a 12 GB RAM floor.
- Twelve restart-always containers plus a migrator; state spans four volumes (pgdata, redisdata, uploads, rabbitmq_data).
- AGPL-3.0 requires legal sign-off before any distribution-adjacent use.
- The 8 GB RAM failure mode during container builds is documented, not hypothetical.
- Version guidance drifts between CONTRIBUTING.md (Node 20+) and package.json engines (node >=22.18.0) — a small signal of docs lagging code.
- Report vulnerabilities to [email protected] with full reproduction details, including the affected IP address or URL.
- Plane commits to acknowledging reports within three business days and providing an estimated resolution timeline.
- No legal action against reporters who follow the guidelines; reports stay confidential, and public credit is offered with permission.
- Automated scanning of Plane's infrastructure or dashboard requires prior consent — the team will set up a sandbox on request.
- Out of scope: MITM or physical-access attacks, text injection without a working vector, email spoofing, missing DNSSEC/CAA/CSP headers, and non-sensitive cookie flags.
Alternatives to compare
| Approach | When to use | Trade-off |
|---|---|---|
Jira | You need the Atlassian marketplace and deep ties to Confluence and Bitbucket pipelines. | Commercial per-seat SaaS |
Linear | Product squads that prioritize a fast issue UI and cyclic planning similar to Plane's Cycles. | Commercial per-seat SaaS |
ClickUp | One subscription should cover tasks, docs, and whiteboards beyond issue tracking. | Commercial per-seat SaaS |
OpenProject | Classic waterfall: Gantt charts and work packages matter more than Cycles and AI Pages. | Open core; self-host free with a paid enterprise tier |
Taiga | Scrum- and kanban-focused teams that want a lighter open-source stack. | Open source with paid cloud hosting |
Focalboard | Mattermost shops that want boards embedded in chat. | Free and open source |
What this trend reveals
Data-residency-grade tracking
The Compose stack puts the Postgres, Valkey, RabbitMQ, and MinIO volumes entirely under your control — exactly the property regulated teams need when issue data cannot leave owned hardware.
Run the docker-compose method on one 16 GB node; confirm Work Items, a Cycle with a burndown chart, and file uploads through MinIO all work; then test backup and restore of the pgdata and uploads volumes.
A first contribution with a clear target
The setup.sh flow, mandatory unit tests, and OxLint/oxfmt enforcement lower the friction of a first pull request — and the docs already contain a fixable inconsistency.
Open a 📘 Docs: issue reconciling CONTRIBUTING.md's Node 20+ against package.json's engines >=22.18.0; the README invites fixes through the forum and GitHub issues.
Price self-hosting against a hosted tracker
Because a free Plane Cloud account and the self-host path expose the same product, a team gets a clean comparison between subscription spend and the ops load of twelve always-on containers.
Run one real squad through one full Cycle end-to-end; log hours spent on upgrades, backups, and incident response, then compare against the current tool's invoice.
RepoDaily verdict
Plane is the rare Jira alternative whose self-host story is fully specified — thirteen Compose services, pinned infrastructure images, God-mode administration, and a published security policy — but you are adopting a small distributed system, not an app. Budget the 12 GB RAM floor, the operational attention of five stateful backing services, and an AGPL-3.0 legal read before moving a production board; otherwise start on the free Plane Cloud account and move to self-hosting when the constraint is real.