A local-first kanban desktop app built with HTML, CSS, and JavaScript. Signboard stores your lists as directories and cards as Markdown files on disk.
Signboard is free for personal use. If you are using Signboard for your work it would be appreciated if you purchase a commercial license to support future development. See the app's "support" button.
- 📂 Cards saved as Markdown files
- 🖌️ Color scheme per board (several to choose from!)
- 🌙 Light and dark mode variants for all color schemes
- 🏷 Custom labels per board
- 🗓 Card due dates and task list item due dates
- 📅 Calendar and "This Week" views
- ✅ Progress counters on cards
- 🔎 Live search
- ⌨️ Keyboard shortcuts
- 🤖 MCP server
- 💻 CLI
- Go to the Releases page.
- On the latest release, use the curated download links in the release body:
Download for macOS (Universal)Download for Windows- Linux packages grouped by package type with explicit
x64andARM64labels
For standard releases, Signboard intentionally promotes a smaller public download set:
- macOS: universal build
- Windows: single installer
- Linux: separate
x64andARM64packages
On macOS, use Cmd. On Windows and Linux, use Ctrl.
Cmd/Ctrl + /: open keyboard shortcutsCmd/Ctrl + N: create a cardCmd/Ctrl + Shift + N: create a listCmd/Ctrl + 1: switch to Kanban viewCmd/Ctrl + 2: switch to Calendar viewCmd/Ctrl + 3: switch to This Week viewCmd/Ctrl + ,: open Board SettingsCmd/Ctrl + Shift + D: toggle light and dark modeCmd/Ctrl + F: focus searchEsc: close open modals
You can also open the shortcut helper from Help > Keyboard Shortcuts.
Signboard includes a built-in MCP server so agents can interact with local boards.
- Dedicated instructions: MCP_README.md
- To copy config:
Help->Copy MCP Config - Optional agent skill:
skills/signboard-mcp/SKILL.md
Signboard includes a terminal CLI for direct board management without going through MCP.
-
Full guide: docs/signboard-cli.md
-
In the desktop app on macOS/Linux:
Help->Install Signboard CLI -
Use
signboard use /Path/to/Boardonce to remember the active board for later commands -
Packaged desktop app executable also accepts CLI commands directly:
- macOS:
/Applications/Signboard.app/Contents/MacOS/Signboard <command> - Windows:
Signboard.exe <command> - Linux AppImage:
./signboard_*.AppImage <command>
- macOS:
Examples:
# Select a board once
signboard use /Path/to/Board
# Lists
signboard lists
signboard lists create "Waiting"
signboard lists rename "Waiting" "Blocked"
# Cards
signboard cards --due next:7
signboard cards "To do"
signboard cards --label Urgent --search launch
signboard cards create --list "To do" --title "Ship release notes" --due 2026-03-20
signboard cards edit --card ab123 --due none --move-to Doing
signboard cards read --list Doing --card ab123
# Imports
signboard import trello --file ~/Downloads/trello-export.json
signboard import obsidian --source ~/Vault/Kanban.md --source ~/Vault/Boards/
signboard import tasksmd --source ~/TasksWorkspace/tasks/Project-A
# Or run through the packaged app executable
/Applications/Signboard.app/Contents/MacOS/Signboard use /Path/to/Board
/Applications/Signboard.app/Contents/MacOS/Signboard cards --due next:7Interesting card listing filters:
--due today--due tomorrow--due overdue--due this-week--due next:7/next:14/next:30--due-source card|task|any--label <name-or-id>(repeatable)--label-mode any|all--search <query>--sort list|due|title|updated--jsonfor scripting output
Import options:
signboard import trello --file <export.json> [--board <path>] [--json]signboard import obsidian --source <path> [--source <path> ...] [--board <path>] [--json]signboard import tasksmd --source <path> [--board <path>] [--json]
Example task checklist syntax:
- [ ] Draft update
- [x ] (due: 2026-03-20) Send proposal
- [ X] Confirm scope
- [ x ] Share notes- The Signboard app can check for updates automatically.
- You can manually check any time from
Check for Updates...:- macOS: Signboard app menu
- Windows/Linux: Help menu
git clone https://github.com/cdevroe/signboard.git
cd signboard
npm install
npm startnpm run test:frontmatter
npm run test:board-labels
npm run test:board-card-metadata
npm run test:due-notifications
npm run test:task-list
npm run test:mcp
npm run test:cli
npm run test:cli-install
npm run test:desktop-cli
npm run test:playwright# Default public macOS release build
npm run dist:mac
# Optional: specific macOS architectures for troubleshooting
npm run dist:mac:universal
npm run dist:mac:arm64
npm run dist:mac:x64
# Optional: build every macOS variant
npm run dist:mac:all# Default public Windows release build
npm run dist:win
# Alias for the default Windows release build
npm run dist:win:all
# Optional: specific Windows architectures for troubleshooting
npm run dist:win:x64
npm run dist:win:arm64# Specific Linux architecture
npm run dist:linux:x64
npm run dist:linux:arm64
# Build both Linux architectures
npm run dist:linux:all
# Optional: RPM-only builds (requires rpmbuild in PATH)
npm run dist:linux:rpm:x64
npm run dist:linux:rpm:arm64
npm run dist:linux:rpm:all# Public release matrix: macOS universal, Windows installer, Linux x64 + ARM64
npm run dist:allNotes:
--publish neveris used for local builds so these commands package artifacts without attempting to publish releases.- Standard public downloads are: macOS universal, one Windows installer, and Linux
AppImage/debbuilds forx64andARM64. - The GitHub release body should be treated as the curated download surface. Link the public download set there instead of expecting users to interpret the raw asset list.
- Copy
.env-sampleto.envand fill in your credentials before running signing/notarization builds. - macOS signing/notarization uses environment variables from
.env(APPLE_ID,APPLE_APP_SPECIFIC_PASSWORD, andAPPLE_TEAM_ID).
Contributions in all forms are welcome!
- Report bugs: Open an Issue.
- Suggest features: Open an Issue with the
enhancementlabel. - Submit fixes or features: Fork the repo, make your changes, and open a Pull Request.
- Keep PRs focused: one change per PR makes reviews faster.
- Be respectful and constructive in discussions.
Signboard now includes an in-app support modal with two options:
- Personal use: free, with an optional tip in any amount
- Commercial use: requested one-time payment
The source code in this repository is licensed under the MIT license.
MIT © 2025-2026 Colin Devroe - https://cdevroe.com
Important clarification:
- The MIT license allows personal and commercial use of the source code.
- The in-app
$49commercial-use payment is currently a support request and honor-system purchase model for packaged app users. - The optional personal-use tip is also a support mechanism, not a separate software license.
My thanks to John Gruber for creating Markdown and to Steph Ango, CEO of Obsidian, for his File over app philosophy.
Signboard includes static versions of the following open source libraries: