Dokumentation ▼

missionctl-Dokumentation

67 MCP-Tools über 9 Terminal-Apps. Local-first, keine Cloud, keine Abos.

Erste Schritte

Installation

Am schnellsten geht's über Homebrew. Alle 8 Tools sind kostenlos, MIT-lizenziert und aus einem Repo getappt:

brew tap aeon022/tap https://github.com/aeon022/homebrew-tap
brew install aeon022/tap/calctl   # repeat for any of: mailctl taskctl notectl budgetctl diaryctl timectl habctl

Oder klone und baue aus dem Quellcode. Jedes Repo hat ein setup.sh, das das Binary kompiliert und nach ~/.local/bin/ installiert:

for repo in mailctl calctl taskctl notectl budgetctl diaryctl timectl habctl; do
  git clone https://github.com/aeon022/$repo
  cd $repo && ./setup.sh && cd ..
done

Stelle sicher, dass ~/.local/bin in deinem $PATH ist:

export PATH="$HOME/.local/bin:$PATH"
# add to ~/.zshrc or ~/.bashrc

Erste Synchronisation

Führe nach der Installation für jedes Tool die erste Synchronisation aus, um den lokalen SQLite-Cache zu befüllen:

mailctl sync      # Apple Mail → local cache
calctl sync       # Apple Calendar → local cache
taskctl sync      # Apple Reminders → local cache
notectl sync      # Obsidian, Apple Notes, or Joplin → local index

budgetctl ist importgesteuert — es gibt keine Hintergrund-Synchronisation:

budgetctl import bank.csv --account checking

Claude-Desktop-Konfiguration

Füge alle 9 Tools mit einem Config-Block zu Claude Desktop hinzu. Bearbeite~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "mailctl":   { "command": "mailctl",   "args": ["mcp"] },
    "calctl":    { "command": "calctl",    "args": ["mcp"] },
    "taskctl":   { "command": "taskctl",   "args": ["mcp"] },
    "notectl":   { "command": "notectl",   "args": ["mcp"] },
    "budgetctl": { "command": "budgetctl", "args": ["mcp"] },
    "diaryctl":  { "command": "diaryctl",  "args": ["mcp"] },
    "timectl":   { "command": "timectl",   "args": ["mcp"] },
    "habctl":    { "command": "habctl",    "args": ["mcp"] },
    "postctl":   { "command": "postctl",   "args": ["mcp"] }
  }
}

Starte Claude Desktop neu. Alle 67 MCP-Tools erscheinen automatisch in jeder Unterhaltung.

Farbschemata

Drücke in einer App T (in timectl C, weil T dort der Aufgaben-Picker ist) oder tippe :theme, um die Theme-Auswahl zu öffnen — mit ↑/↓ wechselst du, der ganze Bildschirm zeigt jede Palette live, enter übernimmt sie (gespeichert in ~/.config/missionctl/theme.yaml), esc bricht ab, sodass jede App und das Dashboard in denselben Farben starten. Eingebaut: terminal (die Farben deines Terminals), catppuccin, classic, dracula, gruvbox, nord, one-dark, solarized und tokyo-night. habctl und budgetctl zeigen das Theme auch in den Einstellungen; notectl dort mit ctrl+t. Einzelne Farben lassen sich in derselben Datei überschreiben.

Eine leere App begrüßt dich statt mit einem leeren Bildschirm mit einer kurzen Welcome-Checkliste (was du zuerst drückst).

Sync über mehrere Geräte

Standardmäßig legt jedes Tool seine SQLite-Datenbank in einem privaten Verzeichnis ab (~/.local/share/<tool>/ — bei manchen Tools ~/Library/Application Support/<tool>/). Für ein einzelnes Gerät reicht das. Um dieselben Daten auf Laptop und Desktop zu nutzen, zeigst du die Datenbank eines Tools auf einen Ordner, den du bereits selbst synchronisierst — iCloud Drive, Dropbox, Syncthing — über den Config-Key data_dir oder eine Umgebungsvariable <TOOL>_DATA_DIR. Alle 8 Entwickler-Tools (nicht postctl, das ein eigenes Profil-System hat) unterstützen das auf dieselbe Weise.

Über die Config-Datei setzen

# ~/.config/budgetctl/budgetctl.yaml
data_dir: ~/Library/Mobile Documents/com~apple~CloudDocs/missionctl/budgetctl

Oder über eine Umgebungsvariable

export BUDGETCTL_DATA_DIR="$HOME/Library/Mobile Documents/com~apple~CloudDocs/missionctl/budgetctl"
export NOTECTL_DATA_DIR="$HOME/Dropbox/missionctl/notectl"

budgetctl hat dafür auch einen TUI-Einstellungsbildschirm — drücke o und setze den Sync-Ordner, ohne eine Config-Datei von Hand zu bearbeiten.

Was das wirklich sicher macht

Eine SQLite-Datei einfach in einen synchronisierten Ordner zu legen ist nicht automatisch sicher — drei konkrete Dinge können schiefgehen, und missionctl-core/syncdir (von jedem Tool genutzt) schließt genau diese Lücken:

  • Der WAL-Journal-Modus teilt den Zustand auf bis zu 3 Dateien auf (.db, .db-wal, .db-shm). Ein Sync-Client lädt hoch, was sich gerade geändert hat — ohne Garantie, dass alle drei zusammen ankommen. Sobald ein Tool auf ein benutzerdefiniertes Verzeichnis zeigt, wechselt es stattdessen auf den klassischen Rollback-Journal-Modus: eine Hauptdatei plus eine kurzlebige -journal-Begleitdatei, die nur während eines aktiven Schreibvorgangs existiert. Das private Standardverzeichnis bleibt unangetastet bei WAL.
  • Zwei Prozesse auf demselben Gerät (zwei Terminal-Tabs, eine abgestürzte Session, die nie losgelassen hat) dürfen nicht gleichzeitig schreiben. Ein Advisory-File-Lock (flock) erzwingt das — und löst sich automatisch, sobald der haltende Prozess beendet wird, egal wie, sodass ein Absturz die Datenbank nicht dauerhaft "gesperrt" zurücklässt.
  • macOS kann eine iCloud-Drive-Datei auslagern, um lokalen Speicherplatz zu sparen ("Mac-Speicher optimieren"), und durch einen Null-Byte-Platzhalter ersetzen. Tools erkennen das und laden die echte Datei nach, statt stillschweigend eine leere Datenbank zu öffnen.

Lizenzierung (Bundle-Features)

Alle 9 Tools sind kostenlos und MIT-lizenziert. Eine kleine Zahl an Features, die echte Rechenkosten (KI-Aufrufe) verursachen oder echte Komplexität hinzufügen, gehören zum missionctl Bundle statt zum kostenlosen Kern — alles andere bleibt für immer kostenlos:

  • budgetctl: KI-Transaktionskategorisierung (--ai) und Erkennung wiederkehrender Zahlungen (budgetctl recurring).
  • notectl: mehr als ein benannter Vault (notectl vault add) — die kostenlose Version umfasst einen.
  • mailctl: KI-Antwortentwurf (die a-Taste in der Detailansicht).
  • calctl: KI-Meeting-Zusammenfassungen (calctl summarize).
  • habctl: KI-Gewohnheitsvorschläge (habctl suggest, die s-Taste) und der KI-Wochen-Review (habctl review, die r-Taste).

Alle fünf nutzen denselben echten Polar.sh-Lizenzschlüssel-Check, den postctls Pro-Lizenz bereits verwendet — keine Phone-Home-Telemetrie, nur eine einmalige (oder offline-zwischengespeicherte) Prüfung deines Schlüssels:

budgetctl license activate <key>   # after buying the Bundle
notectl license activate <key>
mailctl license activate <key>
calctl license activate <key>
habctl license activate <key>

budgetctl license status           # ...and the same "status" subcommand for each

Ohne Lizenz geben gesperrte Befehle eine kurze Meldung mit Verweis auf das Bundle aus und fallen — wo es sinnvoll ist, wie bei --ai-Import — auf das kostenlose Verhalten zurück, statt komplett fehlzuschlagen.

KI-Provider auswählen

Sobald ein Feature freigeschaltet ist, braucht es trotzdem noch ein LLM, das den eigentlichen Aufruf macht — und das muss kein bezahlter Anthropic-Key sein. mailctl, calctl, budgetctl, habctl und diaryctl (dessen KI-Tagebuchgenerierung kostenlos ist, nicht Bundle-gated) erkennen automatisch, was davon konfiguriert ist, in dieser Reihenfolge — ausführliche Anleitung mit Modellempfehlungen weiter unten unter Lokale KI mit Ollama:

  • ANTHROPIC_API_KEY — Claude, kostenpflichtig.
  • OPENAI_API_KEY — GPT-4o mini, kostenpflichtig.
  • GEMINI_API_KEY — kostenlose Stufe, keine Kreditkarte nötig. In etwa 30 Sekunden unter aistudio.google.com/apikey erstellt.
  • Ein lokales Ollama-Modell — kein Key, keine Anmeldung, nichts verlässt deinen Rechner. Der immer verfügbare Fallback, falls nichts anderes gesetzt ist.

Automatische Erkennung überschreiben mit <TOOL>_PROVIDER=anthropic|openai|gemini|ollama (z. B. MAILCTL_PROVIDER=ollama). Bewusst nicht unterstützt: eine claude.ai- oder chatgpt.com-Browser-Session anstelle eines API-Keys wiederzuverwenden — die Nutzungsbedingungen beider Anbieter verbieten die programmatische Wiederverwendung einer Konsumenten-Web-Session, und es riskiert eine Sperre des eigenen Accounts. Kostenloses Gemini oder lokales Ollama decken den Fall "ich will nicht bezahlen oder mich für einen API-Key anmelden" ab, ohne dieses Risiko.

Lokale KI mit Ollama

Jedes KI-Feature im Bundle (plus diaryctls kostenlose KI-Tagebuchgenerierung) fällt bereits automatisch auf ein lokales Ollama-Modell zurück — kein API-Key, keine Anmeldung, keine Kosten pro Anfrage, nichts verlässt deinen Rechner. Hier die vollständige Anleitung: Ollama installieren, das passende Modell pro Tool wählen, und die Umgebungsvariablen, die das steuern.

1. Ollama installieren

# macOS
brew install ollama
ollama serve                    # or just launch the Ollama.app — runs a background server on :11434

# Linux
curl -fsSL https://ollama.com/install.sh | sh

2. Ein Modell laden und testen

ollama pull llama3.2
ollama run llama3.2 "Say hi in five words"

3. Das war's — ein Bundle-Feature ausprobieren

Nichts weiter zu konfigurieren. Die automatische Provider-Erkennung probiert Ollama bereits als Letztes, ganz ohne Einrichtung, sobald das Feature lizenziert ist:

calctl summarize --event-title "Standup"

Das richtige Modell wählen

Größer ist nicht immer besser — es ist ein Kompromiss aus Größe, Qualität und RAM. Grobe Übersicht (alle Größenangaben sind ungefähr, 4-Bit-quantisiert, was Ollama standardmäßig lädt):

ModellPull-Befehl~RAMAm besten für
llama3.2 (3B)ollama pull llama3.2~2 GBStandard-Fallback. Schnell, ausreichend für kurze, unkritische Texte — Habit-Vorschläge, kurze Zusammenfassungen.
mistral (7B)ollama pull mistral~4–5 GBSolide Allzweck-Textgenerierung — spürbar besserer Ton als llama3.2 für E-Mail-artige Texte.
mistral-nemo (12B)ollama pull mistral-nemo~7–8 GBBestes Verhältnis Qualität/GB für längere Synthese — Wochen-Reviews, Meeting-Zusammenfassungen, Antwortentwürfe. 128k Kontext.
qwen2.5 (14B)ollama pull qwen2.5:14b~9 GBSehr zuverlässige strukturierte/JSON-Ausgabe — die sicherste Wahl für budgetctls Transaktionskategorisierung.
qwen2.5-coder (14B)ollama pull qwen2.5-coder~9 GBLiest Code/Diffs präzise und schreibt trotzdem brauchbare Prosa — guter Mittelweg für diaryctl.
codestral (22B)ollama pull codestral~13 GBFür Codegenerierung gebaut, nicht für erzählende Prosa — liest einen Git-Diff am technisch genauesten, klingt am wenigsten "persönlich". Siehe Hinweis zu diaryctl unten.

Welches Modell für welches Tool

Tool / FeatureAufgabentypEmpfehlungSetzen mit
calctl summarizeStrukturierte Meeting-Zusammenfassungmistral-nemoCALCTL_OLLAMA_MODEL
mailctl draft reply (a)Tonsensibles Schreibenmistral-nemoMAILCTL_OLLAMA_MODEL
budgetctl --ai importKlassifizierung, striktes JSONqwen2.5:14bBUDGETCTL_OLLAMA_MODEL
habctl suggest (s)Kurze, unkritische Vorschlägellama3.2 (Standard reicht)—
habctl review / goal (r / g)Längere Synthese, strukturiertes Reasoningmistral-nemo oder qwen2.5:14bHABCTL_OLLAMA_MODEL
diaryctl narrativeLiest Git-Diffs, schreibt persönliche Prosaqwen2.5-coder oder mistral-nemoDIARYCTL_OLLAMA_MODEL

Ein Vorbehalt bei habctl: der Override gilt pro Tool, nicht pro Feature — HABCTL_OLLAMA_MODEL wirkt auf suggest, review und goal gleichermaßen. Willst du suggest beim schnellen Standard belassen, aber für review ein größeres Modell nutzen, setz es nur für diesen einen Aufruf statt dauerhaft zu exportieren: HABCTL_OLLAMA_MODEL=mistral-nemo habctl review.

Mistral vs. Codestral konkret für diaryctl: Codestral ist darauf trainiert, Code zu generieren, nicht Prosa über Code zu schreiben — erwarte eine technisch akkurate, aber eher trockene Beschreibung dessen, was ein Diff getan hat, mit weniger "persönlicher Reflexion". Allgemeine Modelle (mistral-nemo, qwen2.5) schreiben spürbar wärmere, erzählerischere Tagebucheinträge, übersehen aber gelegentlich eine Feinheit im Code. Soll dein Tagebuch sich wie etwas lesen, das du in einem Jahr gerne nochmal liest, starte mit mistral-nemo; wechsle zu qwen2.5-coder (Mittelweg — codebewusst, schreibt aber noch brauchbare Prosa), falls Einträge wiederholt nicht treffen, was deine Commits tatsächlich gemacht haben. Reines Codestral lohnt sich, wenn du eher ein akkurates technisches Changelog willst als ein Tagebuch im literarischen Sinn.

Konfigurationsreferenz

  • OLLAMA_HOST — Standard http://localhost:11434. Überschreiben, falls Ollama woanders läuft (anderer Rechner im LAN, eigener Port).
  • OLLAMA_MODEL — gemeinsames Standardmodell für alle Tools, falls kein Tool-spezifischer Override gesetzt ist. Fällt auf llama3.2 zurück, falls nicht gesetzt.
  • <TOOL>_OLLAMA_MODEL — Tool-spezifischer Override, gewinnt gegen das gemeinsame OLLAMA_MODEL (z. B. DIARYCTL_OLLAMA_MODEL=qwen2.5-coder, MAILCTL_OLLAMA_MODEL=mistral-nemo).
  • <TOOL>_PROVIDER=ollama — erzwingt für genau dieses Tool Ollama, selbst wenn auch ein API-Key gesetzt ist (z. B. in mailctl weiter Claude bezahlen, in budgetctl kostenlos bleiben).

Vollständige Priorität: <TOOL>_PROVIDER (falls gesetzt) legt den Provider direkt fest. Sonst prüft die automatische Erkennung der Reihe nach: ANTHROPIC_API_KEY → OPENAI_API_KEY → GEMINI_API_KEY → Ollama (immer verfügbar, kein Key nötig — der garantierte Fallback). Bei Ollama gilt für das Modell: <TOOL>_OLLAMA_MODEL → OLLAMA_MODEL → llama3.2.

Beispiel ~/.zshrc, um pro Tool dauerhaft unterschiedliche Modelle festzulegen:

export MAILCTL_OLLAMA_MODEL=mistral-nemo
export DIARYCTL_OLLAMA_MODEL=qwen2.5-coder
export BUDGETCTL_OLLAMA_MODEL=qwen2.5:14b
export CALCTL_OLLAMA_MODEL=mistral-nemo
# habctl and everything else not listed here stays on the OLLAMA_MODEL default / llama3.2

Hinweise zur Performance

  • Apple Silicon: Unified Memory heißt, der RAM-Bedarf eines Modells konkurriert direkt mit allem anderen, was läuft. Ein 16-GB-Mac verkraftet gut bis ~9–10-GB-Modelle (mistral-nemo, qwen2.5:14b); bei 8 GB lieber bei llama3.2 oder einfachem mistral (7B) bleiben.
  • Der erste Aufruf nach dem Start von ollama serve (oder nach einem Modellwechsel) ist langsam — Ollama muss das Modell erst in den Speicher laden. Folgeaufrufe sind schnell, solange das Modell warm bleibt (Ollama hält zuletzt genutzte Modelle standardmäßig einige Minuten geladen).
  • Jeder KI-Aufruf in der Suite streamt Token für Token, sodass auch ein langsameres Modell sichtbaren Fortschritt zeigt statt eines langen stillen Wartens — sichtbar an der Live-Wortzahl in mailctls Verfassen-Ansicht oder diaryctls Editor.

Fehlerbehebung

  • "connection refused — is Ollama running?" — ollama serve läuft nicht. Ollama.app starten, oder ollama serve im Terminal ausführen.
  • "404 — model not found" — das in OLLAMA_MODEL/<TOOL>_OLLAMA_MODEL genannte Modell wurde noch nicht geladen: ollama pull <name>.
  • Langsame oder schwache Ausgabe — bei genug RAM ein größeres Modell probieren, oder mit ollama ps prüfen, was wirklich geladen ist.
  • Unsicher, welchen Provider ein Tool gewählt hat? Gesperrte Befehle geben das in ihrer Ausgabe aus, und habctls Settings-Ansicht (S-Taste) zeigt den aktiven Provider direkt an.

Tutorial: Die ersten 10 Minuten

Eine konkrete Anleitung für den ersten missionctl-Aufbau — am Beispiel calctl und taskctl, aber das Muster ist bei jedem Tool gleich.

1. Zwei Tools zum Ausprobieren installieren

brew tap aeon022/tap https://github.com/aeon022/homebrew-tap
brew install aeon022/tap/calctl
brew install aeon022/tap/taskctl

2. Erste Synchronisation ausführen

Das liest aus Apple Kalender / Apple Erinnerungen in den lokalen SQLite-Cache jedes Tools. Nichts verlässt deinen Rechner.

calctl sync
taskctl sync

3. Die TUI ausprobieren

calctl        # opens the week view
taskctl       # opens the task list

Drücke in beiden : und tippe ein paar Buchstaben — die Befehlspalette filtert live alle verfügbaren Aktionen, du musst dir also keine Tastenkürzel vorher merken.

4. Claude Desktop verbinden

Füge beide zu claude_desktop_config.json hinzu (siehe Claude-Desktop-Konfiguration oben), dann Claude Desktop neu starten.

{
  "mcpServers": {
    "calctl":  { "command": "calctl",  "args": ["mcp"] },
    "taskctl": { "command": "taskctl", "args": ["mcp"] }
  }
}

5. Claude etwas fragen, das beide betrifft

Probier: "Was steht morgen in meinem Kalender, und habe ich überfällige Aufgaben?" Claude ruft automatisch list_events von calctl und today_tasks von taskctl auf — keine explizite Tool-Auswahl nötig, Claude liest die Beschreibungen und wählt die richtigen aus.

6. Nächste Schritte

mailctl

Terminal-E-Mail-Client mit TUI-Posteingang, Volltextsuche, Verfassen und 6 MCP-Tools. Synchronisiert deinen Posteingang in eine lokale SQLite-Datenbank — alle Lesevorgänge passieren lokal. Apple Mail unter macOS, Thunderbird unter Linux (neu, derzeit in der Testphase — siehe unten).

Installation

git clone https://github.com/aeon022/mailctl
cd mailctl && ./setup.sh

Synchronisation

mailctl sync          # sync inbox
mailctl sync --all    # sync all folders

Linux (Beta)

Unter Linux liest mailctl E-Mails direkt aus den lokalen mbox-Dateien deines Standard-Thunderbird-Profils und sendet über den eigenen SMTP-Server des Kontos. Neu hinzugekommen und derzeit auf echter Hardware in der Testphase — Feedback und Bug-Reports willkommen.

  1. Thunderbird mindestens einmal installieren und starten, mit mindestens einem eingerichteten IMAP-Konto.
  2. Das SMTP-App-Passwort des Kontos hinterlegen (nötig zum Senden, nicht zum Lesen/Syncen):
    mailctl account set-password you@example.com
  3. mailctl sync, mailctl, usw. funktionieren genauso wie unter macOS.

Aktuelle Einschränkungen: nur mbox-Format (kein Maildir), nur Posteingang (keine anderen Ordner), nur STARTTLS + Passwort-Auth (kein implizites TLS auf Port 465, kein OAuth2), keine Anhänge beim Senden, kein Entwurf-Speichern oder Löschen/Ungelesen-Markieren aus mailctl heraus — das würde Schreibzugriffe auf eine Thunderbird-mbox-Datei erfordern, die eventuell noch offen ist, was mailctl vermeidet.

CLI-Befehle

mailctl inbox                    # open TUI inbox
mailctl inbox --json             # JSON output
mailctl search "from:alice"      # search emails
mailctl send --to bob@x.com      # compose & send
mailctl draft --subject "Hello"  # save to Drafts
mailctl thread --subject "Re:"   # view thread
mailctl accounts                 # list accounts
mailctl license activate <key>   # activate missionctl Bundle
mailctl license status           # check license status
mailctl mcp                      # start MCP server

Der KI-Antwortentwurf (die a-Taste unten) erfordert das missionctl Bundle — alles andere hier ist kostenlos.

TUI-Tastenkürzel

j / k Navigate up/downg / G Jump to top / bottom1-9 Jump to nth visible emailEnter Open selected emailTab / Shift+Tab Switch accountn Compose new emailr Reply (opens compose with quoted text)a AI draft reply (missionctl Bundle)U Open unsubscribe link (detail view)o Open in Mail.appd Delete (press again to confirm)y Copy subject + senderv Select mode — space toggles, A selects all, r marks read, d deletes selectedu Toggle unread-only filters Sync inbox/ Search: Command paletteT Colour theme picker (live preview, saved for the whole suite)? Helpq Quit

MCP-Tools

inboxsearch_emailemail_threadsend_emaildraft_emailsync_inbox

calctl

Apple-Kalender-Anbindung. Termine durchsuchen, erstellen, freie Slots finden. Benötigt macOS — spricht mit Apple Kalender über AppleScript und EventKit.

Installation

git clone https://github.com/aeon022/calctl
cd calctl && ./setup.sh

Synchronisation

calctl sync           # sync next 30 days
calctl sync --days 90 # sync 90 days

CLI-Befehle

calctl list                         # list upcoming events
calctl list --from 2026-07-01       # events from date
calctl add "Team sync" --time 14:00 # create event
calctl free --from today --to +7d   # find free slots
calctl export --week -o week.json   # write a range's events to a file
calctl sync                         # sync calendar
calctl summarize --event-title "Standup"   # AI meeting summary — missionctl Bundle
calctl license activate <key>       # activate missionctl Bundle
calctl license status               # check license status
calctl mcp                          # start MCP server

KI-Meeting-Zusammenfassungen (calctl summarize) erfordern das missionctl Bundle — alles andere hier ist kostenlos.

TUI-Tastenkürzel

j / k Navigate eventsh / l Previous / next week+ / - Show more / fewer days1-9 Jump to nth visible eventEnter Open event detailn Create new evente Edit eventd Delete event (asks Y/N to confirm)u Undo last deletey Copy event titlef Free slotsc Set default calendars Sync calendar/ Filter events: Command paletteT Colour theme picker (live preview, saved for the whole suite)? Helpq Quit

MCP-Tools

list_eventstodaythis_weekfind_free_slotscreate_eventdelete_eventsync

taskctl

Apple-Erinnerungen-Anbindung mit TUI-Aufgabenmanager, eingebautem Pomodoro-Timer, Hintergrund-Sync-Daemon und Stapelverarbeitung.

Installation

git clone https://github.com/aeon022/taskctl
cd taskctl && ./setup.sh

Synchronisation

taskctl sync           # sync Apple Reminders
taskctl daemon         # start background sync daemon

CLI-Befehle

taskctl list                         # list all tasks
taskctl today                        # today's tasks
taskctl week                         # this week's tasks
taskctl add "Review PR" --due today  # create task
taskctl done <id>                    # mark complete
taskctl review                       # AI reviews this week, suggests follow-ups (approve each)
taskctl lists                        # list reminder lists
taskctl daemon                       # background daemon
taskctl mcp                          # start MCP server

TUI-Tastenkürzel

j / k Navigate tasks1-9 Jump to nth visible taskSpace Toggle task completeEnter Task details — a/space/x add, toggle, remove a subtaskn New taske Edit taskd Delete task (asks to confirm)o Open task URLS Postpone to tomorrowy Copy titleu Undo last actionv Select mode — space toggles, A selects all, enter completes, d deletes selectedp Pomodoro timert Focus mode (today & overdue)O Filter: overdue onlyc Show / hide completedi Statss Sync/ Search: Command paletteT Colour theme picker (live preview, saved for the whole suite)? Helpq Quit

MCP-Tools

today_tasksweek_taskslist_taskssynccreate_taskcomplete_taskdelete_task

notectl

Notizen-Anbindung für Obsidian, Apple Notizen oder Joplin. Notizen nach lokalem SQLite synchronisieren, lesen/schreiben, durchsuchen, und Daily Notes verwalten — eine Quelle oder mehrere gleichzeitig. Läuft unter macOS und Linux.

Installation

git clone https://github.com/aeon022/notectl
cd notectl && ./setup.sh

Konfiguration

Bearbeite ~/.config/notectl/notectl.yaml:

vault_path: ~/Documents/Obsidian/MyVault
source: obsidian   # obsidian | apple | markdown | joplin

Für Joplin: Optionen → Web-Clipper in Joplin aktivieren, dann joplin_token auf den dort angezeigten Token setzen.

source: joplin
joplin_token: <token from Joplin's Web Clipper settings>

Mehrere Quellen mit sync_sources in einen gemeinsamen Cache synchronisieren (Schreibziel bleibt, was in source steht):

sync_sources: apple,joplin

Synchronisation

notectl sync      # index configured source(s) into SQLite cache

CLI-Befehle

notectl list                    # list notes
notectl list --tag work         # notes tagged "work"
notectl list --event <id>       # notes linked to a calctl event
notectl read "Note title"       # read a note
notectl write "New note"        # create/update note
notectl write "Meeting" --event-id <id>  # link a note to a calctl event
notectl search "keyword"        # full-text search
notectl search "keyword" --tag work      # search within a tag
notectl daily                   # open today's daily note
notectl license activate <key>  # activate missionctl Bundle
notectl license status          # check license status
notectl mcp                     # start MCP server

Mehrere Vaults

Die kostenlose Version umfasst einen Vault. Ein zweiter erfordert das missionctl Bundle — siehe Lizenzierung.

notectl vault add work ~/Documents/Obsidian/Work
notectl vault add personal ~/Documents/Obsidian/Personal  # missionctl Bundle
notectl vault list                                        # * marks the active vault
notectl vault use work                                     # switch active vault

TUI-Tastenkürzel

j / k Navigate notesg / G Jump to top / bottom1-9 Jump to nth visible noteEnter Open noteSpace Toggle checkbox on current line (detail view, writes back to Apple Notes)n New notee Edit noted Delete note (asks to confirm)u Undo last deleteo Open in external appy Copy titleS Toggle sort (date / title)t Browse tagsL Link graph ([[wiki-links]])p Settings (vault path, source)s Sync vault/ SearchTab / Shift+Tab Browse folders< / > Resize the two-pane split: Command paletteT Colour theme picker (live preview, saved for the whole suite)? Helpq Quit

MCP-Tools

list_notesread_notewrite_notesearch_notessync_notesget_daily_noteappend_daily_notedelete_note

budgetctl

Persönliches Finanztool. Bank-CSVs importieren, Transaktionen per Regeln kategorisieren, Budgetziele setzen und wiederkehrende Zahlungen erkennen. Läuft unter macOS und Linux.

Installation

git clone https://github.com/aeon022/budgetctl
cd budgetctl && ./setup.sh

Import

budgetctl import bank.csv --account checking
budgetctl import n26.csv --format n26
budgetctl import bank.csv --ai       # AI categorization — missionctl Bundle
# Supported: N26, ING, DKB, Sparkasse/George, Austrian bank Umsatzliste, Generic CSV
# File encoding is auto-detected (UTF-8, UTF-16 LE/BE, Windows-1252)

CLI-Befehle

budgetctl list                      # list transactions
budgetctl list --month 2026-07      # filter by month
budgetctl summary                   # income/expense summary
budgetctl summary --month 2026-07   # monthly summary
budgetctl tag "Netflix" --category subscriptions
budgetctl apply-rules               # re-apply all rules
budgetctl goal set --category food --limit 400
budgetctl goal list                 # show goals + progress
budgetctl goal delete --category food
budgetctl recurring                 # detect recurring payments — missionctl Bundle
budgetctl suggest-cuts              # AI suggests budget cuts, approve each — missionctl Bundle
budgetctl export --format csv       # export data
budgetctl export --summary --year 2026   # year-end category totals (tax report)
budgetctl license activate <key>    # activate missionctl Bundle
budgetctl license status            # check license status
budgetctl mcp                       # start MCP server

Siehe Lizenzierung oben — alles außer --ai, recurring und suggest-cuts ist kostenlos.

Profile

Halte Kontexte vollständig getrennt — z. B. ein Geschäftskonto ("firma") und deine privaten Konten — jeweils in einer eigenen Datenbank, sodass sich Transaktionen, Kategorien und Budgetziele nie vermischen. Anders als die data_dir-Sync-Einstellung oben, die nur eine gemeinsame Datenbank verschiebt, ist jedes Profil eine komplett eigenständige:

budgetctl profile add firma [--data-dir DIR]   # create; --data-dir optional (e.g. to sync it too)
budgetctl profile use firma                    # everything (CLI, TUI, MCP) now scopes to firma
budgetctl profile list                         # show all profiles, mark the active one
budgetctl profile use default                  # back to the unscoped default database
budgetctl profile set-data-dir firma DIR       # sync an already-created profile; "" moves it back to local
budgetctl profile remove firma                 # forgets the profile — its database stays on disk

set-data-dir verweigert einen Ordner, der schon von einem anderen Profil oder dem Default belegt ist — Profile sollen Daten trennen, also braucht jedes synchronisierte einen eigenen Ordner.

Ohne aktives Profil verhält sich budgetctl genau wie zuvor. Im TUI wechselst, erstellst oder entfernst du Profile ebenso mit p.

Für einen einzelnen Befehl, ohne dein gespeichertes aktives Profil zu wechseln, nutze stattdessen --profile (oder -p):

budgetctl import statement.csv --profile firma --account checking
budgetctl --profile firma summary

TUI-Tastenkürzel

j / k Navigate transactionsg / G Jump to top / bottom1-9 Jump to nth visible transactionTab / Shift+Tab Next / previous monthy / Y Next / previous year[ / ] Cycle accountsEnter View full detailsn New entry (manual)i Import CSVe Edit selected entryd Delete entry (asks to confirm)u Undo last deletec Set categoryv Select mode — space toggles, A selects all (batch categorize)f Filter by category/ Search transactionss / S Summary (categories, charts, goals)o Settings (sync across devices)p Profiles (switch/create/remove isolated data contexts): Command paletteT Colour theme picker (live preview, saved for the whole suite)? Helpq Quit

MCP-Tools

list_transactionsadd_transactiondelete_transactionbudget_summaryimport_transactionstag_transactionsapply_category_ruleslist_budget_goalsset_budget_goaldelete_budget_goaldetect_recurring_payments

habctl

Terminal-first Habit-Tracker. Verfolge tägliche Gewohnheiten mit Streaks, einem KI-Wochen-Coaching- Review, Habit-Chains und Streak-Risiko-Warnungen — alles lokal in SQLite gespeichert.

Installation

git clone https://github.com/aeon022/habctl
cd habctl && ./setup.sh

CLI-Befehle

habctl add "Meditate" --desc "10 minutes every morning"  # add a habit
habctl check Meditate                # check in for today
habctl today                         # today's habit status
habctl list                          # list habits with streaks
habctl stats                         # streaks + progress bars
habctl review                        # AI weekly coaching review — missionctl Bundle
habctl suggest --goal "more focus"   # AI habit suggestions — missionctl Bundle
habctl remind                        # macOS notification for unchecked habits
habctl license activate <key>        # activate missionctl Bundle
habctl license status                # check license status
habctl mcp                           # start MCP server

KI-Vorschläge und der KI-Wochen-Review erfordern das missionctl Bundle — alles andere hier ist kostenlos.

TUI-Tastenkürzel

j / k Navigate habits1-9 Jump to nth visible habitspace Check in / undo check-inn New habitp Add habit from curated preset liste Edit habitE Quick-edit habit descriptiond Delete habita Archive habit (history preserved)A Browse archived habits (restore / delete)V Batch-select mode — space toggles, A selects all, enter archivesm Move habit to a groupG Manage groupsc Manage habit chainsN Add/edit note on today's check-iny Copy habit names AI suggestions (missionctl Bundle)r AI weekly review (missionctl Bundle)g AI goal → decompose into linked habits (missionctl Bundle)t Stats — heatmap & completionw Toggle 7-day / 30-day windowv Toggle compact / normal viewS Settings — AI provider & API keys/ Filter habits: Command paletteT Colour theme picker (live preview, saved for the whole suite)? Helpq Quit

MCP-Tools

list_habitscheck_habituncheck_habitadd_habitdelete_habitget_habit_statsstreak_at_riskget_weekly_summaryget_weekly_reviewsuggest_habitsadd_checkin_notelist_chains

postctl

Social-Media-Planung für Instagram, Facebook, Threads, X, LinkedIn, Bluesky, Mastodon, Telegram und Discord. Verwalte Posts, Kampagnen und Entwürfe direkt aus dem Terminal — mit getrennten Profilen pro Konto, Kalenderansicht und Scheduler-Dienst pro Profil. Verfügbar unter postctl.sh.

Installation

git clone https://github.com/aeon022/postctl
cd postctl && ./setup.sh

CLI-Befehle

postctl list                         # list posts
postctl post "Hello world"           # create post
postctl post --schedule "2026-07-05 09:00" "Hello"
postctl publish <id>                 # publish post immediately
postctl cancel <id>                  # cancel scheduled post
postctl delete <id>                  # delete post locally & remotely
postctl daemon                       # start scheduler daemon
postctl campaign list                # list campaigns
postctl import posts.csv             # import posts
postctl mcp                          # start MCP server

TUI-Tastenkürzel

j / k Navigate posts/historyTab / Shift+Tab Switch tab (Dashboard/Posts/Schedule/History/Analytics/Settings/Logs)Enter Open detail view / apply filter / activate settings rowSpace Select / deselect post for bulk actionsp Publish selected post(s) immediatelys Schedule post to next queue slote Edit post contentn Create new postd Delete post locally and remotelyr Repurpose post content via AIi Import postsf Filter by campaignx Export history? Toggle quick-help footerR / F1 Open README documentationq Quit

Sicherheit & Spam-Schutz

Um Rate-Limits und Account-Sperren zu vermeiden, bringt postctl eingebaute Schutzmechanismen mit:

  • Warteschlangen-Abstand: Geplante Slots werden automatisch zeitlich verteilt.
  • Überfälligkeitsschutz: Werden mehrere geplante Posts überfällig (z.B. weil das System offline war), wird nur der älteste sofort gepostet. Die restlichen werden automatisch in 20-Minuten-Intervallen neu geplant.
  • Sichere Remote-Löschung: Das lokale Löschen eines Posts löst automatisch API-Löschaufrufe an die Plattformen aus, um die Feeds synchron zu halten.
  • X-Mindestabstand: Zwischen zwei veröffentlichten X-Posts liegen mindestens 60 Minuten; ein früher fälliger Post wartet auf einen späteren Check.

MCP-Tools

list_postsget_postcreate_postpublish_postschedule_postlist_campaignsget_campaign

diaryctl

Entwicklertagebuch direkt aus dem Terminal. Liest Git-Historie, erledigte Aufgaben (taskctl), Kalendertermine (calctl) und Zeitprotokolle (timectl), um KI-generierte Tagebucheinträge zu erstellen.

Installation

git clone https://github.com/aeon022/diaryctl
cd diaryctl && ./setup.sh

Einrichtung

diaryctl init ~/code/myproject --name "My Project"
diaryctl repos   # list registered repos

CLI-Befehle

diaryctl today               # generate today's entry
diaryctl today --open        # open in $EDITOR
diaryctl list                # list all entries
diaryctl show 2026-07-04     # show a specific entry
diaryctl stats --days 30     # coding stats for last 30 days
diaryctl tui                 # open TUI (heatmap + list)
diaryctl mcp                 # start MCP server

TUI-Tastenkürzel

j/k     navigate entries
1-9     jump to nth visible entry
enter   open entry
n       generate today's entry
e       edit entry
d       delete entry (asks to confirm)
y       copy title
u       undo last delete
g       open corresponding note in notectl
r       browse tracked git repos
/       search entries
:       command palette
?       help
q       quit

Beim Bearbeiten eines Eintrags:

a         stream an AI-generated continuation into the entry
ctrl+s    save
ctrl+f    toggle centered writing mode
ctrl+v    enter vim-normal mode
tab / [ / ]  jump to next / previous AI marker or "##" section

MCP-Tools

get_today_statsget_diary_entrywrite_diary_entryget_coding_statslist_diary_entries

timectl

Zeiterfassung direkt aus dem Terminal. Timer starten und stoppen, Wochen-Balkendiagramm ansehen, und Zeitprotokolle in diaryctl-Tagebucheinträge integrieren.

Installation

git clone https://github.com/aeon022/timectl
cd timectl && ./setup.sh

CLI-Befehle

timectl start "Fix auth bug" --project myapp
timectl stop
timectl status               # check running timer
timectl today                # time log for today
timectl week                 # weekly bar chart
timectl log --days 7         # last 7 days log
timectl tui                  # open TUI
timectl mcp                  # start MCP server

TUI-Tastenkürzel

n       start new timer (task@project)
T       start timer from an open taskctl task
s       stop running timer
r       restart selected entry's task
c       copy selected entry into new-task input
j/k     navigate log
1-9     jump to nth visible entry
e       edit notes
d       delete entry (asks to confirm)
u       undo last delete
y       copy task name
g       open linked taskctl task
←/→/t   browse previous/next day, back to today
w       week view
v       stats view
/       filter by task, project, notes
:       command palette
?       help
q       quit

MCP-Tools

start_timerstop_timerget_time_logget_time_stats

MCP-Referenz

Sicher als Standard: Ein KI-Agent, der fremde Texte liest, lässt sich austricksen. Darum speichert send_email nur einen Entwurf, außer du setzt MAILCTL_MCP_ALLOW_SEND=1 in der Umgebung des MCP-Servers; die Veröffentlichen-/Planen-Tools von postctl brauchen POSTCTL_MCP_ALLOW_PUBLISH=1, und jedes delete_*-Tool verlangt confirm=true (das Modell muss dich vorher fragen).

Alle 67 Tools nach App gruppiert. Jedes Tool ist aus Claude Desktop aufrufbar, sobald die Config eingerichtet ist.

mailctl

inboxList recent inbox messages with sender, subject, preview
search_emailSearch by keyword across subject, sender, body
email_threadGet all messages in a thread matched by subject
send_emailSend an email via Apple Mail (opt-in: MAILCTL_MCP_ALLOW_SEND=1, otherwise saves a draft)
draft_emailSave a composed message to Apple Mail Drafts
sync_inboxSync from Apple Mail into local cache

calctl

list_eventsList events between two dates
todayToday's events
this_weekThis week's events (Monday to Sunday)
find_free_slotsFind free time within working hours
create_eventCreate a calendar event
delete_eventDelete an event by title and date
syncSync from Apple Calendar into local cache

taskctl

today_tasksTasks due today or overdue
week_tasksTasks due this week
list_tasksList tasks, filter by list or status
syncSync from Apple Reminders
create_taskCreate task with title, list, due date, notes
complete_taskMark a task completed
delete_taskDelete a task

notectl

list_notesList notes from cache (filter: folder, source)
read_noteRead full note content by title
write_noteCreate or update a note in the vault
search_notesKeyword search across title and content
sync_notesSync Obsidian vault into cache
get_daily_noteGet today's daily note (creates from template if missing)
append_daily_noteAppend content under a named section
delete_noteDelete a note by title (folder disambiguates duplicates)

budgetctl

list_transactionsList transactions, filter by month/category/query
add_transactionAdd a manual income or expense entry
delete_transactionDelete a transaction by its ID
budget_summaryMonthly income/expenses/net with category breakdown
import_transactionsImport from a bank CSV file
tag_transactionsCreate a category rule (pattern → category)
apply_category_rulesRe-apply all rules to all transactions
list_budget_goalsGoals with current-month spending progress
set_budget_goalSet a monthly spending limit for a category
delete_budget_goalRemove a goal
detect_recurring_paymentsDetect subscriptions and recurring charges

diaryctl

get_today_statsGit commits, files changed, suite data (tasks, events, time tracked) for today
get_diary_entryRead a diary entry by date (default: today)
write_diary_entrySave or overwrite a diary entry — used by Claude to fill in the narrative
get_coding_statsAggregate stats for last N days: streak, commits, most active day, repo breakdown
list_diary_entriesList recent entries with date and preview

timectl

start_timerStart a timer with task name and optional project tag
stop_timerStop the running timer, returns task name and duration
get_time_logTime entries for a date or date range with total duration
get_time_statsBreakdown by task/project, daily average, streak for last N days

habctl

list_habitsList all habits with current streak and today's status
check_habitCheck in for a habit today (or a specific date)
uncheck_habitUndo a check-in — correct an accidental entry
add_habitAdd a new habit to track
delete_habitDelete a habit and all its check-in history
get_habit_statsStreak, longest streak, and 30-day completion rate
streak_at_riskList active streaks not yet checked in today
get_weekly_summaryHabit completion summary for the last 7 days
get_weekly_reviewPer-habit 7/30-day data for an AI coaching briefing
suggest_habitsAI-suggested new habits based on goals
add_checkin_noteAdd a text note on a habit's check-in
list_chainsList habit chains — finish one, get nudged to the next

postctl

list_postsList posts, filter by platform/status/campaign
get_postGet a single post by ID with full content
create_postCreate a draft or scheduled post
publish_postPublish a post immediately
schedule_postUpdate a post's scheduled time
list_campaignsList campaigns with post counts and status breakdown
get_campaignGet all posts in a campaign with full content

KI-Workflows

Sobald alle Tools verbunden sind, kann Claude sie gemeinsam orchestrieren. Ein einzelner Prompt kann mehrere Apps umfassen und automatisch ein Dutzend Tool-Aufrufe ausführen.

Morning Briefing

Frag Claude: "Gib mir mein Morning Briefing". Claude ruftinbox, today_tasks und today auf, um E-Mail-Zusammenfassungen, überfällige Aufgaben und heutige Termine zu holen — und fasst sie zu einem priorisierten Briefing zusammen.

Wochenplanung

Frag Claude: "Hilf mir, meine Woche zu planen". Claude nutztthis_week, week_tasks, find_free_slotsund get_daily_note, um deinen Zeitplan zu prüfen und einen Plan in deiner Obsidian Daily Note zu entwerfen.

Monatlicher Finanz-Review

Frag Claude: "Prüfe meine Finanzen für Juni". Claude ruftbudget_summary, list_transactions unddetect_recurring_payments auf und nutzt dannwrite_note, um die Analyse in deinem Vault zu speichern.

E-Mail zu Aufgabe

Frag Claude: "Verwandle wichtige E-Mails dieser Woche in Aufgaben". Claude durchsucht deinen Posteingang (search_email), identifiziert Handlungsbedarf und erstellt Aufgaben in Apple Erinnerungen (create_task).

Bereit loszulegen?  brew install — Kostenlos →