Introduction
Umbra is a local-first infinite canvas where a team plans, tracks and presents its work — with the boards stored as files on your own disk.
Umbra is a desktop app for the planning layer of office work. Ideating, planning, tracking and presenting are the same activity — figuring out what to do — and they are normally split across four products that do not talk to each other. Umbra puts them on one canvas.

What it is
- An infinite canvas. Notes, checklists, tables, text, links, images, files, freehand drawing, shapes, connectors — nineteen kinds of block, all on the same surface. Boards nest inside boards, so a plan can be one card or a hundred.
- A work model. Frames are columns; a card's status is the column it sits in. Owners, due dates, estimates, blockers, WIP limits and swimlanes on top of that.
- A presentation tool. The camera is the deck. You define a path through the canvas and present the plan you already made.
- Local first. A board is a folder of append-only files on your disk. The app never calls home during use, and it opens on a plane.
What it is not
- Not Figma. No design tooling, no vector editing beyond shapes.
- Not Jira. No workflows, no sprints, no burndown, no reporting.
- Not an AI reseller. Umbra drives the agent CLI you already pay for and never sees a prompt or marks up a token.
Where your data lives
Everything is under your application data directory, as plain files:
umbra_data/
log/
meta.json # store id, format version, this device
ops/<deviceId>.jsonl # append-only, one writer, never conflicts
snapshots/<n>.json # compaction
assets/ # files and images you dropped on a canvasBecause each device only ever appends to its own log, two people editing the same board cannot corrupt it — the logs merge. That single decision is what makes multi-user Umbra possible without a server.