Carbon
Carbon: Simple on the surface, powerful underneath
Carbon is a offline-first, with a self host-able sync server task manager. With the simplicity of generic ToDo apps, the power of leading GTD apps, with time tracking, and a core belief in No SaaS!
What You Get Right Away
Capture & organize
- Quick inbox for ideas
- Projects to group related tasks
- Tags to categorize work
- Due dates and defer (snooze) dates
- Priority flagging
Smart views
- Today - what’s due today
- Inbox - capture and process
- Flagged - your priorities
- Review - (GTD) Review Projects, so you don’t forget!
- Nearby - Tasks valid at your location
- Plan - Plan your day
- Custom Views - Create custom views with powerful filters.
Works offline, syncs when ready
- Full browser app with SQLite
- Works completely offline
- Syncs to your server whenever you connect
- No cloud, no accounts you don’t control
Deploy it yourself
- Docker Compose setup
- Runs on your VPS, NAS, or home server
- Optional authentication
- No vendor lock-in
Power Features
- Recurring tasks — set up repeating work
- Nested tasks — break work into subtasks
- Drag-and-drop — organize your way
- Dark/light mode — fits your lighting
- PWA installable — install as an app
- Desktop app — global quick-add hotkey (Ctrl/Cmd+Shift+A), system tray, and close-to-tray
- Task assignment — delegate to team members
- Sharing — collaborative projects with read/write access
- Comments — per-task discussions with @mentions
- Markdown export — export your lists and tasks as clean, portable Markdown
- REST API — integrate with Home Assistant, scripts, anything
Talk to It: Natural-Language Control
Carbon understands plain language — capture and manage tasks the way you’d describe them out loud.
- In-app command box — type something like “add milk to shopping, due Friday”. A server-side tool-loop carries it out and tells you exactly what changed, tracking token usage per command.
- Agent API (
/api/agent/*) — a small set of granular tools (resolve, lists, items, add, complete, update, tag, geo-tag, nearby, geocode) that any LLM can compose. Scoped tokens, per-item write gating, and fuzzy name→ID matching keep it safe and forgiving. - Telegram bot — chat with Carbon in plain language. It remembers the conversation, so follow-ups just work: “add bread and milk to the shopping list”, then “sausages too”, then “I’ll get bread and sausages from Coles, milk from Aldi” — and each item is tagged to the right place.
- Hermes skill & webhook — drive Carbon from the CLI or any script via the
carbon-nlskill and its webhook listener. - Bulk tagging — add or remove tags across a whole list, tag, query, or set of items in a single call.
Location-Aware Reminders
- Place geocoding — “remind me at the nearest Coles” finds the closest match (via OpenStreetMap) and geofences a tag to it. Cached, rate-limited, and opt-in per deployment.
- Multi-device location — every signed-in device can report its own GPS as a toggleable source. Name and manage your devices; the freshest accurate fix wins. Home Assistant is just one more source.
- Geofencing — fire reminders when you arrive or leave, via device GPS or Home Assistant.
Learn More
Full Feature List — Detailed breakdown of every feature
Blog & Videos — Deep-dives into key features (coming soon)
Get Started
Visit carbon.etx.sx
Or
git clone https://github.com/emmertex/carbon.git
cd carbon
npm install
npm run dev
Open http://localhost:3042. Works offline immediately. Configure a server in Settings when you’re ready to sync.
Self-host: docker compose up -d --build