Chestnut

A tiny always-on-top companion for your Obsidian vaults. It keeps you company while you write, hops between vaults, delivers notes, and swallows quick captures. Native Swift, ~1.2MB download, tiny on your disk, not just your screen.

Meeting notes.md

drag onto Chestnut

interactive re-creations, not screenshots V Vault Hopper Space Quick Capture C Paste to plugin O Notice action M Right-click menu These work on this page too

Download for macOS

macOS 14+ · free & open source · first-launch steps · user guide

Features

Three tricks it knows

Vault Hopper

One palette, every vault. V from anywhere, type to filter, to hop. Pin a home vault and it's always first; jumps straight to today's note.

Note Courier

Drop a note onto Chestnut to move or copy it into another vault. Attachments travel with it, name conflicts get Obsidian-style suffixes, nothing is ever overwritten, and every delivery is journaled for undo. A single non-markdown file or folder that a plugin matches opens a picker, with the courier always on it. .md drops, and drops of several items at once, go straight to the courier.

Quick Capture

Space, jot, and your capture is appended to today's note in the vault you choose. Markdown toolbar, drafts that survive dismissing the panel, and a satisfied gulp when the thought lands.

Plugins

Teach it new tricks

Plugins are shell scripts that turn clipboard content, dropped files, and URLs into vault notes. Drop a bookmark, paste a code snippet, feed it a PDF. If there's a plugin for it, Chestnut knows what to do.

How it works

A plugin is a folder in ~/.config/chestnut/plugins/<name>/ containing a manifest.json and a script. The manifest declares what the plugin accepts (text, url, image, file, folder) and how output is handled (capture, save, clipboard, notify). Input arrives via environment variables and stdin; output goes to stdout.

Press C and Chestnut classifies the clipboard, then runs the matching plugin. Drop a single non-markdown file and it asks instead: the picker lists every matching plugin plus Deliver to a vault, because a plugin never takes a file away from the courier. Markdown files always go to the courier. Plugins can also narrow to specific file extensions (e.g. only .csv or .txt).

Manifests are hot-reloaded: edit one in ~/.config/chestnut/plugins/ and Chestnut picks up the change live. Enable or disable individual plugins from the right-click menu.

Minimal example

manifest.json
{
  "api": 1,
  "name": "Bookmark",
  "description": "Save a URL as a markdown note",
  "script": "./save-bookmark.sh",
  "accepts": ["url"],
  "output": "save"
}
save-bookmark.sh
#!/bin/bash
echo "# $CHESTNUT_TITLE"
echo ""
echo "[$CHESTNUT_URL]($CHESTNUT_URL)"
echo ""
echo "Saved on $(date +%Y-%m-%d)."

Output modes: capture pre-fills the capture panel (with optional attachments), save writes directly to the vault, clipboard copies the result, and notify shows it in a speech bubble. Scripts can also return a JSON envelope with file attachments for full control.

Customize

Hotkeys, sprite color themes, and capture defaults are configurable in ~/Library/Application Support/Chestnut/config.json, which the right-click menu opens for you. That file is yours; Chestnut keeps its own settings separately, so your edits are never overwritten. Details in the User Guide.

Privacy

Nothing leaves your Mac

No network, no telemetry

There is no networking code at all. Even “Check for Updates” just opens your browser.

Never touches Obsidian's files

Vault discovery is read-only observation. Chestnut never writes to .obsidian/ or any Obsidian setting.

Writes only when you act

A capture append, a courier delivery: explicit actions, journaled for undo, never overwriting.

Works with Obsidian closed

The obsidian CLI is an optional enhancement, never a requirement.

Get started

Install

  1. Download the DMG and drag Chestnut to Applications.
  2. Chestnut is free and unsigned (not notarized), so the first launch needs one extra step:

    macOS 15 Sequoia and later: open the app once (macOS will decline), then System Settings → Privacy & Security → Open Anyway.

    macOS 14 Sonoma: right-click the app → Open → Open.

    Or, from Terminal:

    xattr -dr com.apple.quarantine /Applications/Chestnut.app
  3. Chestnut appears in the corner of your screen. Right-click it for everything: vaults, themes, plugins, capture, launch at login. Five global hotkeys let you reach it from any app, including the menu itself (see the hotkey reference).

Or install with Homebrew:

brew trust --cask gapmiss/tap/chestnut   # required for third-party taps
brew install --cask gapmiss/tap/chestnut

Rather build it yourself? git clone the source and run make run. A Swift toolchain is all it takes, no Xcode project.