Local-first notes & tasks

Your notes are a folder
on your own disk.

Pellet keeps everything as plain markdown in a folder you pick. No account, no server it phones home to, nothing that stops working if we disappear. Open the same folder in any text editor — or back in Obsidian — and it all still reads.

v0.4.0  ·  macOS, Windows, Linux, iPad  ·  works offline
Capabilities

One app where a notes app, a to-do app and a calendar usually go.

They all read the same markdown files, so nothing has to sync between them. Move a due date on the calendar and the table already knows.

write

Live-preview editor

Markdown renders in place with the source still underneath. Editable tables, collapsible lists, and a format bar over any selection. Type / for headings, lists, tables and links — /date and /time insert the real value, and / glued to other text never fires, so a URL stays a URL.

How the editor works →
link

Wikilinks & backlinks

[[like this]], with autocomplete. The side panel shows what points here and where this goes. ![[note#heading]] embeds just that section, live, so you write a thing once.

Linking and embeds →
see

Graph

Every link you've written, as a map — the whole vault, or just one note's neighborhood. The simulation runs in a worker with Barnes–Hut approximation, so a few thousand notes stay interactive instead of locking the window.

Links and the graph →
plan

Table & Kanban

A real filter builder: eleven fields, and operators that fit the type — thirteen date operators including is overdue, is within next N days and is next month. Sort three levels deep, group, save it as a pill. Subtasks nest; the list virtualizes.

Filters and saved views →
schedule

Calendar & Gantt

Month, week, agenda. Drag to reschedule, click empty space to create. The timeline adds percent-complete bars, parent rollups, milestones, and finish-to-start dependencies you draw by dragging — with a warning when you draw one that can't happen.

Choosing a view →
repeat

Real recurrence

Full RRULE. BYMONTHDAY=-1 is the last day of the month; BYDAY=TU;BYSETPOS=2 is the second Tuesday. Completing one occurrence stamps a permanent file and advances the parent, and COUNT counts down as you go.

How repeats work →
arrange

Canvas & whiteboards

Spatial boards in JSON Canvas — the open format, so Obsidian opens them too. Whiteboards are the genuine Excalidraw editor over real .excalidraw files that round-trip with excalidraw.com.

Canvas and whiteboards →
read

PDF & EPUB

Read them in the app. Highlights in four colors become real notes under Highlights/ — linkable, searchable, and anchored so they survive the document being re-rendered.

Readers and highlights →
draw

Handwriting

Apple Pencil pages on iPad, stored as open JSON rather than a proprietary blob. Send one off for transcription and get an ordinary note back.

Handwriting pages →

A closer look

The same vault, seen six different ways.

Nothing is duplicated or synced between views — they're all reading the same markdown files. Change a due date on the calendar and the table row moves too, because there's only ever one copy. These are screenshots of the real thing.

Pellet's Table view: saved filter pills across the top, a quick-add row, and a task list with type, group and tag columns showing 2,519 of 2,984 rows.

Table

Filter with real AND/OR conditions, sort three levels deep, group, and save the whole thing as a pill you click once. Subtasks nest. Edit inline without opening anything.

Pellet's Kanban board, columns driven by priority, cards carrying due dates, groups and tags, with a backlog drawer.

Kanban

As many boards as you want, columns by status, priority or group, drag between them. Cards carry badges — including a countdown when something is coming due.

Pellet's Calendar in month view, with scheduled tasks laid across the grid and an unscheduled side panel.

Calendar

Month, week, or agenda. Drag a task to reschedule it, click empty space to make one. Future occurrences of a repeating task show as ghosts, so you can see what's coming without it cluttering your real list.

Pellet's Graph view in File scope, showing one architecture decision note connected to nine neighboring notes, each labeled.

Graph

Every link you've written, as a map — the whole vault, or just what one note touches. The simulation runs in a worker, so a few thousand notes stay interactive.

Pellet's note list in gallery mode, a grid of thumbnail tiles rendered from canvases and documents.

Gallery

Switch any listing from rows to a grid of thumbnails — generated from the real file, so a canvas looks like that canvas. One vault-wide toggle, three tile sizes.

A Pellet canvas: note cards and groups arranged spatially with connecting edges.

Canvas

Arrange cards and whole notes in space, group them, link them. Saved as JSON Canvas — the open format — so Obsidian opens them and Pellet opens Obsidian's.


The fine print, up front

The parts most apps leave out.

All of it is documented, because you should know how something behaves before you trust it with ten years of notes.

Filtering that means it

Eleven fields, with operators that fit the type rather than one lowest-common-denominator set. The thirteen for dates:

  • is on
  • is before
  • is after
  • is within next N days
  • is overdue
  • is today
  • is tomorrow
  • is this week
  • is next week
  • is this month
  • is next month
  • is empty
  • is not empty

Created and Modified deliberately drop the forward-looking ones — is next week makes no sense for a date in the past.

Every field and operator →

Repeats you can actually express

Real RRULE, not a dropdown of five presets.

FREQ=WEEKLY;INTERVAL=2;BYDAY=MO,WE,FR
Mon/Wed/Fri, every other week
FREQ=MONTHLY;BYMONTHDAY=-1
The last day of each month
FREQ=MONTHLY;BYDAY=TU;BYSETPOS=2
The 2nd Tuesday of each month
FREQ=YEARLY;COUNT=5
Annually, 5 more times
FREQ=WEEKLY;BYDAY=FR;UNTIL=20261231
Every Friday through 2026-12-31

Completing an occurrence writes a permanent record of it and moves the parent on. Future ones show as ghosts on the calendar, so you can see what's coming without it filling your list.

How recurrence works →

Things that go wrong, handled

  • Two devices edited the same note. Both versions are kept — the loser becomes a clearly-named conflict copy. Sync never hard-deletes.
  • The power went out mid-write. Every write is temp file, hash verify, atomic rename. You get the whole old file, never half a new one.
  • You need last Tuesday's version. Every save is snapshotted locally, with a recovery screen.
  • Your YAML has keys Pellet invented no opinion about. They come back out exactly as you wrote them. Pellet never touches a key it doesn't own.
  • A phone can't lay out your desktop's split panes. The workspace collapses to one document below 768px instead of arriving broken.
How sync works →

Writing

An editor that stays out of the way.

Markdown renders as you type, with the source still sitting underneath where you left it. No mode switch to hunt for, no preview pane eating half the window.

  • Wikilinks and backlinks. Type [[ and pick. The right panel shows what links here and where this goes.
  • Transclusion. ![[note#heading]] pulls that section in live, so you write a thing once.
  • Tables you can edit like a spreadsheet, collapsible lists, slash commands, and a format bar that appears on selection.
  • Tabs, split panes, torn-off windows — each with its own back and forward history.
  • File history. Every write is snapshotted on your machine, with a recovery screen for when you need it.
Launch plan

Ship the site first, then the signed builds. Everything about the relay lives in Sync design.

Embedded from Sync design
Peer signing keys are pinned at pairing. The relay can withhold data. It can never read or forge it.

#launch #infra/relay


Tasks

A task manager that happens to live in your notes.

Pellet started as an Obsidian plugin. This is that whole feature set, rebuilt so it no longer needs Obsidian — same file format, so an existing vault just opens.

  • Repeats, properly. Full RRULE — every other Tuesday, last Friday of the month, first weekday after the 15th. Finishing one stamps a permanent record and moves the parent forward.
  • A Gantt timeline that slides in beside the table. Drag bars to reschedule or resize, draw dependencies between them, and it tells you when you've drawn one that can't happen.
  • Notifications ten minutes ahead of timed work, at the due time, and at nine in the morning for anything all-day.
  • Your calendar, if you want it. Google, iCloud, or any webcal:// feed, overlaid in the calendar view. Off until you turn it on.
  • Meeting links found for you — Zoom, Meet, Teams, Webex — pulled out of the event text and put on a button.
  • Turn a task back into a note and it drops the task frontmatter, leaving everything else exactly as it was.

On a phone and iPad

The same vault in your pocket.

Not a cut-down companion app — the same core, laid out for a small screen. Tabs and split panes collapse to one document, the panes become a stack you can walk back up, and handwriting gets Apple Pencil on iPad.

Pellet on a phone: a folder's note list, with a back button to the folder tree and a bottom tab bar.
Browse
Pellet on a phone: a note open in the editor, filling the screen.
Write
Pellet on a phone: the calendar's Day view for today, with an all-day task pinned above a timed schedule.
Plan

Sync

Sync that you control!

If you want your vault on more than one device, you run the relay yourself. It's a single file with no dependencies, and it holds nothing but ciphertext — your devices trade keys directly with each other at pairing and pin them, so the relay is never asked to vouch for anyone.

It can refuse to hand your data over. It cannot read it, change it, or slip something in.

  • Conflicts keep both versions. The loser becomes a clearly-named copy. Sync never hard-deletes anything.
  • Lost a device? Revoking it rotates the vault key and wipes the relay.
Turn it on in Settings → Sync relay and pair your other devices. No server to rent, nothing to install. It syncs whenever this computer is awake — when you want it always-on, move the relay to a machine that always is.

Automation

Let an AI agent work on your vault — on your machine only.

Pellet can open a small server on 127.0.0.1 that speaks MCP, with eighteen tools covering notes, tasks, and boards. It never leaves the loopback interface, it takes a bearer token, and it's off until you switch it on.

// 18 tools, grouped
tasks    list · get · create · update · delete · complete (knows about recurrence)
notes    list · get · create · update · delete · rename · list_tags
kanban   list_groups · list_kanban_boards · create_kanban_board · delete_kanban_board · move_task_to_column
// deliberately not exposed: anything that touches your calendar

How automation works →