Search...Search plugins and themes...
⌘K
Sign in
  • Get started
  • Download
  • Pricing
  • Enterprise
  • Account
  • Obsidian
  • Overview
  • Sync
  • Publish
  • Canvas
  • Mobile
  • Web Clipper
  • CLI
  • Learn
  • Help
  • Developers
  • Changelog
  • About
  • Roadmap
  • Blog
  • Resources
  • System status
  • License overview
  • Terms of service
  • Privacy policy
  • Security
  • Community
  • Plugins
  • Themes
  • Discord
  • Forum / 中文论坛
  • Merch store
  • Brand guidelines
Follow us
DiscordTwitterBlueskyThreadsMastodonYouTubeGitHub
© 2026 Obsidian

Cockpit Board

andreconde21andreconde212k downloads

Dynamic Kanban board from frontmatter properties with calendar views, timers, and recurring tasks.

Add to Obsidian
  • Overview
  • Scorecard
  • Updates22

A dynamic Kanban board for Obsidian driven by frontmatter properties. Drag-and-drop updates files instantly. Includes calendar views, timers, recurring tasks, and a checklist editor.

Features

  • Kanban Board — Cards auto-sort into columns based on configurable rules (status:, date:, label:, no-date)
  • Drag & Drop — Move cards between columns or reorder within. Bulk drag with multi-select (Ctrl+Click)
  • Calendar Views — Week, month, and year views with time grid, all-day cards, and year heatmap
  • Timers — Start/stop timers on cards, time tracked in time_spent frontmatter
  • Recurring Tasks — Cron-based rules create tasks automatically each day
  • Checklist Editor — Click the checklist count to open a drag-and-drop editor modal
  • Archive Search — Search completed tasks in a YYYY/MM/DD folder structure
  • Auto-Archive — Optionally move done cards into the archive folder after a configurable number of days
  • Due-Soon Notifications — Configurable lead times (default 15 and 1 minutes before a task's time), with optional desktop notifications that reach you when Obsidian is in the background
  • Phone Reminders — Opt-in: the same reminders as push notifications through ntfy, even with Obsidian closed; tapping one opens the card
  • Mobile Optimized — Tab-based column switching with swipe gestures
  • Privacy Mode — Blur card titles (hover to reveal) for screen sharing
  • Focus Mode — Show only Today + In Progress columns (press F)
  • Split & Close — Split a partially-completed checklist into done + continuation cards
  • Copy card references — Right-click a card to copy its ID, path, links or a ready-to-paste context block
  • Card IDs — Optional short IDs (CB-12) for every card, and a link that opens a card on the board
  • Start an agent on a card — Opt-in, desktop: start Claude Code, Codex or another coding agent with the card as its task, on this computer or a remote machine, in herdr, a new terminal or tmux

Installation

From Community Plugins (recommended)

  1. Open Settings > Community plugins
  2. Click Browse and search for "Cockpit Board"
  3. Click Install, then Enable

Manual

  1. Download main.js, manifest.json, and styles.css from the latest release
  2. Create a folder <vault>/.obsidian/plugins/cockpit-board/
  3. Copy the three files into that folder
  4. Enable the plugin in Settings > Community plugins

Quick Start

  1. Create a folder for your tasks (e.g., Tasks)
  2. Go to Settings > Cockpit Board and set the Tasks folder
  3. Open the board with the ribbon icon or command palette: "Open Cockpit Board"
  4. Create task files with frontmatter:
---
title: "My Task"
status: scheduled
due: 2026-04-15
time: "14:00"
completed:
project: "Project X"
labels: [Work, DEADLINE]
created: 2026-04-01
source: manual
---

# My Task

Task description here.

## Checklist: Steps
- [ ] Step one
- [ ] Step two

Deep Link & Home-Screen Shortcut (Android / iOS)

The board registers the obsidian://cockpit-board URL, so you can jump straight to it without going through the command palette:

obsidian://cockpit-board?vault=MyVault&view=board
obsidian://cockpit-board?vault=MyVault&view=calendar
obsidian://cockpit-board?vault=MyVault&view=archive

Replace MyVault with your (URL-encoded) vault name. view is optional and defaults to board. The link works on desktop too, and survives a cold start (Obsidian opens first, then the board).

Android: open the URL once in Chrome, then ⋮ menu → Add to Home screen. Or use any shortcut-maker app with the URL above as the target.

iOS: create a Shortcut with Open URLs set to the link above, then Share → Add to Home Screen. Alternatively paste the link in Safari and use Share → Add to Home Screen.

Quick-add (file a task without opening the board)

obsidian://cockpit-board?vault=MyVault&quickadd=Buy%20milk&due=today&time=18:00

quickadd is the card title (required). Optional: due (today, tomorrow, or YYYY-MM-DD), time (HH:MM), project, labels (comma-separated), and open (board, calendar, archive, or none — the default, which just shows a confirmation and leaves you where you were). URL-encode the vault name and title: spaces as %20 (not +, which can arrive as a literal plus), and &, #, ? as %26, %23, %3F, or they cut the title short.

Test it first. Paste your link into a chat message or note to yourself and tap it. If Android asks which app should open it, pick Obsidian → Always. You should see ⚡ Added: … and the new card in your tasks folder; once that works, turn it into a shortcut.

Phone recipes: on iOS, a Shortcut with Ask for Input → URL Encode → Open URLs gives you dictation-to-task in seconds. On Android, automation apps like MacroDroid or Tasker can prompt for text and open the URL; URL-encode the typed text before inserting it, or titles with & or # break. For recurring one-tap tasks, pin a static URL per task straight to the home screen with a shortcut-maker app.

Card IDs and Copying

Right-click a card (on the board, in the calendar, or in the tab's "..." menu when the card is open) for:

  • Copy card ID — the card's id property, or its file name when it has none
  • Copy path — its path in the vault
  • Copy as agent context — title, ID, full path, board link, status, due date, labels and the card's text, ready to paste into a chat or terminal
  • Copy reference... — pick another format: absolute path, wikilink, Obsidian link, board link, title

With several cards selected, the menu copies each card's ID or path, one per line. The same actions exist as commands, for the card that is open.

Short IDs. Turn on Settings > Card IDs > Assign card IDs and new cards get id: CB-1, CB-2... (your prefix). Assign an ID to cards without one numbers the existing ones, oldest first. Two devices creating cards while offline can pick the same number; the plugin tells you, and the same command renumbers the newer card.

Open a card by link:

obsidian://cockpit-board?vault=MyVault&card=CB-12
obsidian://cockpit-board?vault=MyVault&card=Tasks/fix-login.md

card is an ID, a file name, or a vault path.

Phone Reminders (ntfy)

Obsidian cannot raise phone notifications itself, and its timers stop once the app is in the background. With phone reminders on, Cockpit hands each reminder (a card due with a time, at each lead time) to an ntfy server as a scheduled message. The ntfy app shows it as a normal notification at the right time, even when Obsidian is closed, and tapping it opens the card on the board.

Network use. Off by default; while off the plugin makes no network calls, except to cancel reminders this device scheduled before it was turned off (retried until the server confirms). When on, it sends the card's title, project, time and board link to the server you configure, nothing else. Use a server you trust: your own, or the public ntfy.sh with a hard-to-guess topic and access control.

Setup:

  1. Install the ntfy app (Android, iOS, or F-Droid).
  2. In the app, add your server (Settings > Default server, or per subscription) and log in as a user who may read the topic.
  3. Subscribe to the topic, e.g. cockpit.
  4. On the server, create a write-only access token for that one topic (self-hosted: ntfy user add, ntfy access <user> <topic> write-only, ntfy token add <user>).
  5. In Settings > Phone reminders (ntfy): turn it on, enter the server URL, the topic and the token, then press Send test push.

The token is stored in the plugin's data.json, which syncs with your vault (and may end up in git or a backup), so it must not be an admin or read token: write-only, one topic. It is only ever sent over https:// (or to localhost); with a plain http:// server, reminders pause.

How it behaves:

  • Reminders are scheduled up to Schedule ahead hours in advance (default 24, at most 72), then topped up while Obsidian is open on any device.
  • Each reminder has a fixed ID (card, date, lead time). A card marked done, deleted, moved out of the tasks folder or given another time or date has its pending reminders replaced or cancelled on the server, so the old one does not fire. Any open device does this, not only the one that scheduled the reminder: each remembers the timed cards it has seen and cancels the old reminders of a card that changed. Reminders that already fired are never touched.
  • Known gap: a card that was created and then changed or deleted while only the device that scheduled its reminder had seen it, with that device now closed, keeps its old reminder until that device opens again. A done card is always covered: any device cancels a done card's reminders.
  • Known limitation: fire times use each device's own time zone. Keep the devices that run Obsidian in the same zone, or they schedule the same reminder at different times.
  • Laptop and phone both open: each device posts the same IDs, so you get one notification, not two. Each device also re-sends its reminders every 30 minutes, which corrects a device that armed an old version before its vault had synced.
  • Skip desktop notification (on by default) leaves out the desktop system notification while phone reminders are on, so a reminder buzzes once. The in-app notice still shows.
  • Turning the feature off cancels the reminders this device scheduled.
  • The desktop system notification is only skipped for a reminder this device knows is on the server; when scheduling failed, the desktop still notifies.

Running Agents (desktop)

Off by default. Turn it on in Settings > Agents > Enable agent launcher. When on, the plugin starts programs on your computer and, over SSH, on other machines — only when you click Start. It reads card files into the agent's prompt, and reads ~/.ssh/config and herdr machine list to offer machines. It stores no passwords or keys; SSH uses your own.

Right-click a card:

  • Start agent... opens a dialog: which agent, where (this computer or a machine), how the card gets there, which session, the folder, and the prompt, which you can edit before starting.
  • Start starts your default agent on this computer, no dialog. Cards imported from outside (external calendars, email) always open the dialog, with a warning, so you see their text before anything runs.

The card popup has a Start agent button too, and both are commands.

Agents. Profiles for Claude Code, Codex, Gemini or any command, with arguments and a prompt template ({{context}}, {{id}}, {{title}}, {{path}}, {{cardFile}}, {{boardLink}}...). Presets never add permission-bypass flags.

Sessions.

Session What happens
herdr A new herdr workspace in the folder, the agent started and given the prompt. Works on remote machines saved in herdr too. Shows up in sheprd
New terminal A terminal window opens with the agent running (the first terminal found, or the command you set)
tmux A new window in the cockpit session; optionally a terminal attached to it. On Windows, local tmux runs in WSL

Machines. No list to maintain: herdr's saved machines and the hosts in your SSH config show up by themselves; add others by alias. Each machine can optionally have its own folder, agent, session and shared folder.

Getting the card to a remote machine:

  • Upload over SSH (default) — the card is copied to ~/.cache/cockpit-board/cards/<id>.md on that machine
  • Shared folder (default when set for the machine) — the card is copied into <shared folder>/cockpit/ and the agent reads it from the machine's side of the folder
  • In the prompt — the card's text goes in the prompt itself

Each start is logged on the card in agent_runs. A card can set its own local working folder with an agent_cwd property.

The card text is never put into a command line or a script: it is written to a file and read from there, or handed to herdr as a single argument.

Frontmatter Properties

Property Type Description
title string Card title (falls back to filename)
status string scheduled, in-progress, pending, done, or custom
due date Due date (YYYY-MM-DD)
due_end date End date for multi-day tasks
time string Time (HH:MM) — shows in calendar time grid
completed date Date marked as done
project string Project name — shown as [Project] Title
labels list Labels for filtering and color-coding
order number Custom sort order within a column
time_spent number Timer minutes tracked
source string manual, recurring, etc.
created date Creation date
id string Card ID (optional; see Card IDs)
agent_cwd string Folder a local agent starts in (optional)
agent_runs list Log of agents started on this card (written by the plugin)

Column Rules

Rules determine which column a card belongs to. Evaluated in order: status rules first, then date/label rules.

Rule Matches
status:done Cards with status: done
status:in-progress Cards with status: in-progress
status:pending Cards with status: pending
date:today Due today or overdue
date:tomorrow Due tomorrow
date:future Due after tomorrow
no-date No due date set
label:Personal Has the "Personal" label
NOT label:Work Does not have "Work" label
no-date AND label:Personal Combine with AND

Recurring Tasks

Create a JSON file (e.g., Scripts/recurring.json) and set its path in Settings:

{
  "tasks": [
    {
      "title": "Weekly review",
      "cron": "0 7 * * 5",
      "labels": ["Work"],
      "project": ""
    }
  ]
}

Cron format: minute hour dayOfMonth month dayOfWeek (standard cron).

Special frequencies: biweekly-2nd-sat, monthly-1st-mon.

External Calendars (Outlook / ICS)

One-way editable import: new Outlook events become cards in your tasks folder with the label you choose. Imported cards are never overwritten, so your edits are safe. Cancelled Outlook events do not delete cards. Skipped automatically: STATUS:CANCELLED, subjects starting with Canceled:/Cancelled:, and blocks with no title. A cancelled instance also suppresses that day's occurrence of its series, so no ghost card is left behind. Events deleted in Outlook leave no trace in the file — set "When events disappear" per calendar to keep the card (default), mark it done, or delete it. Only dates inside the sync window are ever touched, and cards you already marked done are left alone.

  1. Get the calendar feed:
    • Outlook on the web: Calendar > Share > Publish > copy the ICS link.
    • Outlook desktop: Calendar > Publish Online > copy the link (https:// or webcal:// both work).
    • No link? Export a .ics file into your vault instead.
  2. Settings > Cockpit Board > External calendars > + add calendar.
  3. Set Name (e.g. Client Acme), paste the ICS URL (or .ics path: vault-relative like Calendars/client.ics, or on desktop an absolute path like ~/Downloads/client.ics), Label (e.g. ClientAcme), and optionally Project (e.g. ClientAcme — shown as a [Project] prefix).
  4. Run Sync external calendars now from the command palette. New events import with due, time, due_end, labels: [ClientAcme], source: external-calendar.

Notes: syncs on startup, hourly, and every N minutes (configurable, min 5). Only new occurrences import — recurring Outlook series expand inside your days-back/ahead window. Filter the board by the label to see just that client.

Timezone: UTC times convert automatically. Times stamped with a zone (Outlook usually stamps its own, e.g. Swiss time) convert to your device time automatically. If the calendar has naive times in another zone, set the source timezone (IANA name, e.g. Europe/Zurich) and they convert too. Leave it empty when the calendar is already in your time.

Keyboard Shortcuts

Key Action
F Toggle focus mode
T Move selected cards to today
D Mark selected cards as done
N New card
Delete Delete selected cards
Escape Clear selection
Ctrl+Click Toggle card selection
Shift+Click Range select cards

Settings

  • Tasks folder — Folder to scan for task files
  • Archive folder — Folder for archived tasks (YYYY/MM/DD structure)
  • Auto-archive done cards — Automatically move done cards into the archive folder once they've been completed for N days (also available as the "Archive done cards now" command)
  • Recurring config path — Path to recurring.json
  • External calendars — Outlook/ICS feeds imported with a fixed label (one-way, editable, never overwritten)
  • Reminder lead times — Minutes before a card's time to warn, comma separated (default 15,1). Each lead fires once per card per day
  • Desktop notifications — Also send a system notification, so reminders arrive when Obsidian is in the background (desktop only)
  • Phone reminders (ntfy) — Off by default. Server, topic, write-only access token, how many hours ahead to schedule, skip the desktop notification, send a test push
  • Card open mode — Split pane, sidebar, or modal
  • Mobile default column — Which column shows first on mobile
  • Privacy mode — Blur card titles
  • Checklist editor — Enable click-to-edit checklists
  • Card label tint — Subtle background color from primary label
  • Custom card order — Enable drag-and-drop reordering
  • Label Colors — Assign custom colors to labels (auto-assigned from palette when not set)
  • Columns — Add, remove, reorder, and configure column rules
  • Card IDs — Assign short IDs to new cards, prefix, show the ID on cards
  • Agents (desktop) — Enable the launcher, default agent, prompt template, agent profiles, this computer's session and terminal, machines and their overrides

License

MIT

HealthExcellent
ReviewPassed
About
Organize tasks with a dynamic Kanban driven by frontmatter that auto-sorts into columns and updates files instantly via drag-and-drop, including multi-select bulk moves. Switch to week/month/year calendar views, run timers tracked in frontmatter, create cron-based recurring tasks, edit checklists in a drag-and-drop modal, search archived completions, and use privacy and focus modes with mobile-friendly gestures.
TasksProject managementCalendar
Details
Current version
1.5.3
Last updated
3 weeks ago
Created
7 months ago
Updates
22 releases
Downloads
2k
Compatible with
Obsidian 1.13.0+
Platforms
Desktop, Mobile
License
MIT
Report bugRequest featureReport plugin
Author
andreconde21andreconde21
github.com/andreconde21
GitHubandreconde21
  1. Community
  2. Plugins
  3. Tasks
  4. Cockpit Board

Related plugins

Operon

Task and project management system that unifies inline tasks and file-based tasks in the same workflows with Tables, Filters, Calendars, Kanban boards, Gantt views, Canvas, and time tracking.

Abyss Tasks

A task management interface for Markdown tasks.

TaskNotes

Note-based task management with calendar, pomodoro and time-tracking integration.

Tasks

Track tasks across your vault. Supports due dates, recurring tasks, done dates, sub-set of checklist items, and filtering. Maintained by Clare Macrae and Ilyas Landikov, created by Martin Schenck.

Day Planner

Turn tasks from daily notes, the Tasks plugin, and calendars into time blocks on an editable timeline, with built-in time tracker.

Base Board

Organize notes into Kanban boards using frontmatter properties. Drag and drop cards between columns powered by Bases.

TickTickSync

Sync TickTick tasks.

Task List Kanban

Organizes all of the tasks within your files into a kanban view.

dotpm

Full-featured task and project management: stunning Gantt charts, Kanban boards, Table views, customizable fields, due date notifications, dependancies

Tasks Calendar Wrapper

Simple wrapper for Tasks Calendar and Tasks Timeline.