A lightweight, offline-first kanban board desktop app.
Boards are plain directories of markdown files - no databases, no cloud, no accounts.
Built as a fast, personal replacement for Trello that plays nicely with Obsidian and other markdown tools.
See more screenshots in docs/screenshots/
Daedalus uses ~60 MB of RAM and loads boards in under 100ms. Note: This depends on board size, but for reference I went from 1-3GB RAM on Trello to ~200MB RAM loading the same board in Daedalus.
#label, icon:, and url: filter prefixes[[card-id]] links between cards? for helpdaedalus-cli for scripting and automation.md files = cards, board.yaml = configA board is a directory with this structure:
my-board/
board.yaml # Board config (list order, labels, templates, preferences)
scratchpad.md # Optional board-level notes
_assets/icons/ # Custom SVG/PNG icons
backlog/ # Each directory is a list
1.md # Each .md file is a card
2.md
in-progress/
3.md
done/
4.md
Cards are markdown files with YAML frontmatter:
---
id: 42
title: Implement OAuth2
list_order: 1
created: 2026-02-05T09:00:00-05:00
updated: 2026-02-18T14:20:00-05:00
due: 2026-02-25T17:00:00-05:00
labels:
- Feature
- Backend
icon: shield.svg
url: https://github.com/org/repo/pull/142
estimate: 8
counter:
current: 4
max: 7
step: 1
label: Endpoints
checklist:
label: Implementation Steps
items:
- desc: "Set up provider config"
done: true
idx: 0
- desc: "Write integration tests"
done: false
idx: 1
timeseries:
label: Build Time (sec)
entries:
- t: "2026-01-06"
v: 142
- t: "2026-01-13"
v: 128
range:
start: 2026-02-14T09:00:00-05:00
end: 2026-02-28T17:00:00-05:00
---
# Implement OAuth2
Card body in markdown...
All frontmatter fields except id, title, and list_order are optional.
Unknown YAML keys are preserved through round-trips, so cards edited by other tools won't lose data.
If a card was migrated from Trello export JSON, some Trello fields are maintained in the YAML frontmatter. See Trello migration section below.
trello_data:
id: xxx
url: https://trello.com/c/BOARD_ID/CARD_ID-card-title
date_closed: None
date_last_activity: 2026-01-23T17:09:26.602Z
date_completed: None
Daedalus doesn't ship with icons to stay small. Upload your own SVG or PNG files through the icon manager, or drop them into _assets/icons/.
Good sources: Lucide, Simple Icons, or any site's favicon.
# Convert .ico to .png if needed
python3 -c "from PIL import Image; Image.open('favicon.ico').save('favicon.png')"
daedalus-cli provides scriptable access to boards:
daedalus-cli --board ~/boards/my-board board # get board summary
daedalus-cli --board ~/boards/my-board lists # get all lists
daedalus-cli --board ~/boards/my-board cards todo # get cards in a list
daedalus-cli --board ~/boards/my-board card-get 42 # get full card details by ID
daedalus-cli --board ~/boards/my-board card-create todo "New task" # create a task
daedalus-cli --board ~/boards/my-board card-delete 42 # delete a card by ID
daedalus-cli --board ~/boards/my-board list-create backlog # create a list
daedalus-cli --board ~/boards/my-board list-delete backlog # delete a list by name
daedalus-cli --board ~/boards/my-board export-json out.json # export board as JSON
daedalus-cli --board ~/boards/my-board export-zip out.zip # export board as zip
All output is JSON for easy piping to jq or other tools.
Export your Trello board as JSON, then convert:
python3 scripts/trello_to_md.py --input trello_export.json --output ~/boards/my-board
This creates list directories and card markdown files with frontmatter metadata from the Trello export.
daedalus-cli not fully tested. This was a nice to have for automation, but I don't really use it in my workflow yet.sudo pacman -Syu --needed base-devel gtk3 webkit2gtk svt-av1 libavif npm go
go install github.com/wailsapp/wails/v2/cmd/wails@latest
wails doctor # verify all dependencies
wails dev # Development server with hot reload
wails build # Production build
go test ./... # Run Go tests
cd frontend && npx svelte-check # TypeScript/Svelte type checking
DAEDALUS_DEBUG=1 wails dev
Features that I originally thought up, but I need to think about it more.