Who's free next week?
Every small agency answers that question badly. It lives in someone's head, a colour-coded spreadsheet, or a group chat at 5pm on a Friday. So work gets promised to people who are already full, the quiet capacity nobody noticed goes unsold, and the person who was going to be on holiday finds out about their new project the week before they leave.
CapacityLens is a shared, week-by-week picture of where everyone's time is going — so you can see who is busy, who has room, and who is about to be buried, and move things around before it becomes a problem.
One screen. People down the side, days across the top, the work in between. Red means someone is over capacity that day. The percentage next to each name is how full they are across the window you're looking at.
Read the latest release notes for the highlights and upgrade notes.
The demo runs entirely in your browser with sample data. It is fully editable — drag things about, book time off, break something. Schedule changes stay in memory and reset when you reload; only device choices such as the cosmetic signed-in state and display preferences stay in your browser.
corepack enable
pnpm install
pnpm run dev:demoThen open http://127.0.0.1:5173, pick a demo account, and you're in.
- See the week ahead — 1, 2, 4, 6 or 8 weeks at a time, filtered by discipline, client, project or activity.
- Spot trouble early — daily over-capacity in red, plus a 14-day forward warning for problems just off the edge of the screen.
- Plan work you haven't won yet — placeholder people for roles you'd need to hire or borrow, and external partners who don't count against your capacity.
- Plan around people's dates — give Studio and Supplementary people optional inclusive start and end availability dates while keeping existing bookings visible for history.
- Keep holidays in the picture — time off sits in the same view as the work, so it stops being a surprise.
- Know how full you really are — utilisation per person and across the whole visible window.
- Run it yourself — your data in your own SQLite file, on your own server, under AGPL-3.0.
CapacityLens will not track tasks, tickets, deadlines, budgets or timesheets, and it won't schedule anyone by the hour. It answers a simpler question — where are your people's hours going, and where is there room? — and stops there.
If you need Jira, use Jira. This is the thing you look at before you open Jira.
Agency owners, studio and operations leads, resource planners and project leads: the people who get asked "can we take this on?" and need a shared, honest answer.
CapacityLens is alpha software with a single maintainer. Database upgrades are tested from thirteen released database snapshots, the oldest from 0.20.0-alpha.1, so a database created by that release or any later one is expected to upgrade in place. Beta will mean the upgrade path and the settings are stable.
Details: how it is tested · philosophy
Every release from 0.73.0-alpha.1 carries a server archive. Node 24.19.0 or newer within 24.x is the supported runtime. Node 26.9.0 or newer within 26.x has experimental, best-effort compatibility; see the compatibility notes.
- Download
capacitylens-X.Y.Z.tar.gzfrom the latest release and unpack it. - Pick a folder for the database; its file is created there on first start.
- Configure: in the unpacked folder, run
node server/dist/index.mjs init --public-url <address> --db <file in step 2's folder>. It prints the environment file with both secrets generated: paste it into your host's environment editor, or add--out /etc/capacitylens.envto write the file. - Start it with
node --env-file=<your env file> server/dist/index.mjs, or as a service. - Open the address and create your company with the setup token from step 3.
Install CapacityLens has the commands for a managed host or a Linux host. Docker is another way to install.
Password sign-in is the stable self-hosted default, with breached-password screening and user-controlled session revocation. Google Workspace and Microsoft Entra ID are the supported company sign-in providers; GitHub remains experimental in mixed mode. Optional offline access keeps a read-only snapshot for up to seven days — it never queues or syncs edits, and SQLite stays the source of truth.
Details: how sign-in works · offline access
Read the CapacityLens documentation online. The same
docs ship with the repository: open docs/index.html straight from a checkout — no server,
no build — or read the Markdown sources under docs-src/ on GitHub.
- What is CapacityLens? — the product on one page, the quick start and the two-minute demo.
- Use CapacityLens day to day — for schedulers: the schedule, overview, resources, projects, time off and settings.
- Set up your company as the Owner and Administer your company — the first Owner's handover, then invites, roles, scheduled people and company settings.
- Company login (SSO) — setting up Google or Microsoft and connecting existing accounts.
- Install and run CapacityLens — the release archive, Docker and managed VPS installation, plus configuration, TLS, backups, monitoring and incident response.
- Security and privacy — posture, stored data and operator responsibilities.
- Glossary — the terms the docs rely on, in plain language.
React, TypeScript, Vite and Tailwind in the browser; Zustand for UI state and undo/redo; a shared
TypeScript domain in shared/ for validation, migrations and the scheduling rules; Fastify and
Better Auth over Node's built-in SQLite driver on the server. Vitest, Testing Library, Playwright
and axe keep it honest. Deploy with Docker Compose, plain Node 24 or a managed VPS platform.
The browser always talks to the API; only VITE_CAPACITYLENS_DEMO=1 swaps in the throwaway
in-memory demo adapter.
Node 24 and pnpm are required; the pinned version is in .nvmrc.
nvm use
corepack enable
pnpm install
pnpm run dev # web app on :5173 and SQLite API on :8787, with sample data loaded
pnpm run gate:all # app and server: formatting, typecheck, lint, tests, coverage and build budget
pnpm run e2e # Chromium demo, database and authentication flowsStart with contributing and the development guide for the enforced coverage and build numbers, cross-browser checks and CI jobs. Also worth reading: the server README, the standing decisions behind the product and architecture, and the changelog.
Governance · Support · Security policy · Security review · ASVS 5.0.0 ledger · Trademarks
CapacityLens is AGPL-3.0-only. Product names and logos are handled separately in TRADEMARKS.md.