Persona
Persona
Notizen, Aufgaben und ein KI-Chat, der deine Dateien kennt. Alles befindet sich in einem Ordner mit schlichtem Markdown auf deinem Rechner.
$ personaDas startet einen lokalen Server und öffnet deinen Arbeitsbereich im Browser. Keine Konten, keine Cloud, keine Datenbank. Wenn dieses Projekt morgen verschwände, hättest du weiterhin jede Notiz und jede Aufgabe als .md-Dateien, die du mit jedem Programm öffnen kannst.
Warum noch eine Notizen-App?
Weil ich ständig zwischen schöner Software und dem Besitz meiner Daten wählen musste:
Persona | Obsidian | Notion | Logseq | |
Datenformat | schlichtes Markdown | Markdown + Plugins | proprietäre Cloud-DB | org-mode/Markdown |
Vollständig offline | ✅ | ✅ | ❌ | ✅ |
Integrierte Aufgaben | ✅ | Plugin | ✅ | grundlegend |
Lokaler KI-Chat | ✅ Ollama, keine Konfiguration | über Cloud-API-Plugins | deren Cloud | ❌ |
Spracheingabe | ✅ lokale STT | ❌ | ❌ | ❌ |
Open Source | ✅ MIT | Freemium, geschlossen | geschlossen | ✅ AGPL |
Ich habe Obsidian zwei Jahre lang täglich genutzt. Irgendwo bei Plugin Nummer dreißig wurde mir klar, dass ich mein Notiz-Setup mehr pflegte, als dass ich darin schrieb. Persona ist mein Versuch der Version, in der alles Wichtige einfach von Haus aus funktioniert und dich das Datenformat nie als Geisel hält.
Related MCP server: MindOS
Was du bekommst
Markdown-Notizen — Dateien auf der Festplatte in einer Ordnerstruktur, die du selbst bestimmst. Bearbeite sie in jeder App; Persona beobachtet das Dateisystem und bleibt auf dem Laufenden
Aufgaben — schreibe
fix login bug #backend !! fridayund Persona sortiert Priorität, Projekt-Tag und Fälligkeitsdatum in die Frontmatter ein. Kanban-Ansicht inklusiveKI-Chat — verbindet sich automatisch mit Ollama, wenn es läuft (kostenlos und privat), oder nutzt jede OpenAI-kompatible API. Er kann Notizen erstellen und Aufgaben verwalten, nicht nur Fragen beantworten
Semantische Suche — Embeddings werden lokal berechnet und innerhalb des Arbeitsbereichs gespeichert
Spracheingabe — lokale Spracherkennung (Speech-to-Text) über parakeet.cpp auf Apple Silicon
MCP-Server — Claude Code, Cursor und andere Agenten können direkt auf deinen Arbeitsbereich lesend und schreibend zugreifen
Screenshots
Schnellstart (macOS)
Du brauchst Node.js 20+ (brew install node) und git.
git clone https://github.com/jayamitkatariya/personacli.git
cd personacli
npm install --allow-scripts=persona
npm install -g . --allow-scripts=persona
personaBeim ersten Start wirst du durch die Auswahl eines Arbeitsbereich-Ordners geführt und kannst optional ein KI-Modell verbinden. Danach reicht einfach persona.
Soll die KI kostenlos und privat laufen?
brew install ollama && ollama pull llama3.2
persona # detects ollama automatically, no configpersona doctor # health check: node, workspace, server, AI config
persona path # print workspace pathAktualisierung:
cd personacli && git pull
npm install --allow-scripts=persona
npm install -g . --allow-scripts=personaDeinstallation:
npm uninstall -g persona
pkill -f "dist/server/index"
rm -rf ~/.personaDie Fehlerbehebung findest du weiter unten in dieser README ausführlich.
Der Stack
Durchgängig TypeScript. React-UI, serviert von einem Hono-Server, Vite für Builds. Lokale Embeddings für die Suche, parakeet.cpp für Sprache, Ollama oder ein beliebiger OpenAI-kompatibler Endpunkt für den Chat. Absichtlich langweilige Technik.
Mitwirken
Issues und PRs sind willkommen, besonders Fehlerberichte aus realer Nutzung. Wenn sich etwas falsch anfühlt, ist es das wahrscheinlich auch; sag Bescheid.
Lizenz
Wenn dir Persona etwas Nerven spart, hilft ein Stern anderen Leuten, es zu finden.
Optionale Extras
Extra | Installation | Was du bekommst |
| Kostenlose, private lokale KI — wird automatisch erkannt, kein API-Schlüssel nötig | |
|
| Spracheingabe (nimmt auf und transkribiert im Chat) |
parakeet-Modell | Lokales Speech-to-Text-Modell für die Spracheingabe |
Für die Spracheingabe weise Persona auf dein parakeet-Binary und dein Modell hin:
export PERSONA_STT_BIN=/path/to/parakeet-cli
export PERSONA_STT_MODEL=/path/to/model.gguf
personaFehlerbehebung
Symptom | Lösung |
|
|
| npm ≥11.16 blockiert Paket-Skripte standardmäßig — installiere mit |
| Dein npm-Präfix ist nicht beschreibbar — installiere Node über nvm oder Homebrew (oder nutze |
Server startet nicht / Portfehler |
|
Chat meldet "no model configured" | Öffne Einstellungen → KI (⌘,) und füge einen Anbieter hinzu, oder installiere Ollama. |
Du führst | Der Server läuft möglicherweise bereits — drücke ⌘K im Browser oder beende ihn mit |
Spracheingabe schlägt fehl |
|
Erster Start
Wenn du persona zum ersten Mal ausführst, führt dich ein kurzer Einrichtungsassistent durch drei Schritte im Browser:
Arbeitsbereich — hier speichert Persona deine Notizen (standardmäßig
~/Persona).Notes/,Projects/und.persona/tasks/werden für dich angelegt.KI — optional. Eine laufende Ollama-Instanz wird erkannt und ohne Konfiguration verbunden; andernfalls füge einen beliebigen OpenAI-kompatiblen API-Schlüssel hinzu. Du kannst diesen Schritt jederzeit überspringen und später unter Einstellungen → KI (⌘,) einrichten.
Fertig — eine Notiz
Notes/Welcome.mdwird als geführter Rundgang durch den Arbeitsbereich erstellt: die drei Ansichten, Tastenkombinationen und Terminal-Befehle. Du kannst sie jederzeit über die Befehlspalette (⌘K → "Welcome-Notiz öffnen") wieder öffnen.
Es wird nie etwas überschrieben: Wenn der Arbeitsbereich-Ordner bereits Dateien enthält, erscheinen sie unverändert in der Seitenleiste, und die Welcome-Notiz wird nur einmal erstellt.
Befehle
Befehl | Was er macht |
| Startet bei Bedarf den Server und öffnet den Arbeitsbereich im Browser. |
| Startet bei Bedarf den Server und öffnet den Arbeitsbereich im Browser. |
| Fügt der heutigen Journal-Notiz eine Zeile hinzu ( |
| Erstellt eine Aufgabe (in natürlicher Sprache), ohne den Browser zu öffnen. |
| Bittet die KI, deine offenen Aufgaben zu prüfen (nur Vorschläge). |
| Chatte mit der KI aus dem Terminal; die Antwort wird inline gestreamt. Hänge Dateien/Ordner/Aufgaben mit |
| Erstellt/öffnet die heutige Journal-Notiz; |
| Durchsucht Dateien und Aufgaben vom Terminal aus (fuzzy + semantisch). |
| Gibt den aktuellen Arbeitsbereich-Pfad aus. |
| Gesundheitscheck: node, Arbeitsbereich, Server, KI-Konfiguration. |
| Führt Persona als MCP-Server (stdio) für Claude Code, Hermes, Cursor usw. aus. Siehe |
Was wo liegt
~/Persona/ ← your workspace (choose it on first run)
├── Notes/ ← plain Markdown, organised however you like
├── Projects/
│ └── my-project/
│ └── PRD.md
├── Imported/ ← notes brought in from other apps
│ ├── obsidian/
│ ├── bear/
│ ├── roam/
│ ├── notion/
│ └── plain/
└── .persona/
├── tasks/ ← tasks are Markdown files with frontmatter
├── agents/ ← background agent runs (JSON)
├── pins.json ← your pinboard (pinned notes & tasks)
└── embeddings/ ← local semantic-search index (notes, not secrets)Aufgaben sind nur Dateien:
---
type: task
status: todo
priority: high
due: 2026-08-12
project: Personal
---
Finish Persona PRDBearbeite sie in einem beliebigen Editor oder im Finder — Persona beobachtet das Dateisystem und synchronisiert automatisch.
Arbeitsbereiche
Schreiben — Dateibaum + Markdown-Editor (CodeMirror). Autosave, Speicherstatus, Live-Vorschau (Bearbeiten / Split / Vorschau), Umbenennen, Verschieben, Duplizieren, Löschen, Drag & Drop. Öffne mehrere Notizen gleichzeitig in Tabs (⌘W zum Schließen, ⌘⇧[ / ⌘⇧] zum Wechseln); jeder Tab behält seine eigene Scrollposition und seinen Undo-Verlauf. KI-generierte Tags: Drücke ⌘S (oder den ✨-Button), und Persona schlägt Tags für deine Notiz vor, die automatisch als YAML-Frontmatter hinzugefügt werden.
Aufgaben — schnelle persönliche Aufgabenliste. Gib
Buy domain tomorrow #personal !in das Schnell-Eingabefeld ein; Datumsangaben, Projekte und Priorität werden für dich geparst. Wiederkehrende Aufgaben funktionieren ebenfalls:Water plants every weekerstellt sich selbst mit dem nächsten Fälligkeitsdatum neu, wenn du es abschließt. Klicke auf Triage (oder führepersona triageaus), und die KI überprüft deine offenen Aufgaben — markiert falsche Prioritäten, fehlende Fälligkeitsdaten, nicht getaggte Projekte, veraltete Aufgaben und Duplikate — und wendet jeden Vorschlag mit einem Klick an. Sie ändert keine Aufgabe, ohne dass du zustimmst.Pinnwand — Pinn wichtige Notizen oder Aufgaben an (⋯-Menü im Dateibaum oder in der Aufgabenzeile), und sie bleiben in jedem Tab oben in der Seitenleiste angeheftet. Klicke auf einen Pin, um direkt dorthin zu springen; fahre mit der Maus darüber, um die Anheftung aufzuheben. Pins liegen in
.persona/pins.jsonund überstehen Neustarts.Chat — eine KI, die deinen Arbeitsbereich sehen und darin handeln kann. Hänge Kontext mit
@file.md,@folderoder@tasksan und stelle Fragen zu deiner tatsächlichen Arbeit. Die KI kann außerdem Notizen und Ordner erstellen, bearbeiten, verschieben und löschen sowie Aufgaben in deinem Namen erstellen, abschließen, aktualisieren und löschen — du siehst für jede Aktion, die sie ausführt, einen kleinen Status-Chip.Agents — KI-Läufe im Hintergrund für mehrstufige Arbeiten. Gib Persona eine Aufgabe wie „organisiere meine Inbox-Notizen“, und es arbeitet sie live mit Werkzeugen ab, ohne einen Chat offen zu halten. Läufe werden unter
.persona/agents/gespeichert und können abgebrochen, wiederholt oder gelöscht werden.Semantische Suche — deine Notizen werden lokal eingebettet und nach Bedeutung durchsucht, sodass „das, was ich über Camping geschrieben habe“ die Notiz findet, die den Wald, das Zelt und den Regen erwähnt — selbst wenn das Wort „Camping“ nie vorkommt. Sie treibt die Befehlspalette (⌘P),
persona searchund den Chat an: Wenn du keinen Kontext anhängst, zieht der Assistent automatisch die für deine Frage relevantesten Notizen heran und zitiert sie.Module — Fokus, Journal, Heutiges und Agents können unter Einstellungen → Module ein-/ausgeschaltet werden; aktivierte Module erscheinen in der Seitenleiste, deaktivierte bleiben über ⌘K erreichbar.
Import — Importiere Exporte aus Obsidian, Bear, Roam, Notion oder einfachen Ordnern unter Einstellungen → Import. Alles landet unter
Imported/<source>/und überschreibt nie vorhandene Notizen.
Tastatur
Shortcut | Action |
| Befehlspalette |
| Schnelle Datei-/Aufgabensuche |
| Schreiben / Aufgaben / Chat |
| Neue Datei |
| Neue Aufgabe |
| Neuer Notizentwurf |
| Tab schließen |
| Vorheriger / nächster Tab |
| Speichern |
| Einstellungen |
| Seitenleiste umschalten |
| Palette / Dialog schließen |
KI
Jeder OpenAI-kompatible Anbieter funktioniert — OpenAI, OpenRouter, Ollama, lokale Modelle, benutzerdefinierte Endpunkte. Konfiguriere Anbieter, Basis-URL, Modell und API-Schlüssel unter Einstellungen → KI. Der Schlüssel wird im macOS-Schlüsselbund gespeichert (fällt auf eine Konfigurationsdatei mit 0600-Berechtigungen zurück) und wird nur an den von dir gewählten Anbieter gesendet.
Kein Setup mit Ollama. Wenn eine lokale Ollama-Instanz läuft
(http://127.0.0.1:11434, oder wohin auch immer $OLLAMA_HOST zeigt),
erkennt Persona sie automatisch und verbindet sich ohne API-Schlüssel und
ohne Konfiguration. Es wählt ein sinnvolles Chat-Modell aus den
installierten. Ein explizit konfigurierter Anbieter hat immer Vorrang vor
der automatischen Erkennung, und persona doctor meldet, was erkannt wurde.
Der Chat-Assistent ist schreibfähig: Er kann Notizen erstellen und bearbeiten, Ordner anlegen, Dateien verschieben und umbenennen sowie deine Aufgaben verwalten — sie erstellen, aktualisieren, abschließen und löschen. Er löscht Dateien oder Ordner nur, wenn du ihn ausdrücklich darum bittest. Anbieter ohne Tool-Unterstützung fallen automatisch auf reinen Lese-Chat zurück.
Semantische Suche. Notizen werden in Blöcke zerlegt, lokal eingebettet
und unter .persona/embeddings/ gespeichert. Die Einbettungen stammen in
der folgenden Prioritätsreihenfolge:
Eine explizite Embedding-Basis-URL (optional, Einstellungen → KI) — richte sie auf einen beliebigen Anbieter mit Embedding-Unterstützung (OpenRouter, SiliconFlow, ein lokales Ollama …).
Ein laufendes lokales Ollama mit einem Embedding-Modell — z. B.
ollama pull all-minilmodernomic-embed-text— kein API-Schlüssel erforderlich.Andernfalls der Endpunkt deines Chat-Anbieters.
Der Index wird im Hintergrund neu aufgebaut, wenn der Server startet, wenn sich dein API-Schlüssel oder das Embedding-Modell ändert, und inkrementell, wann immer eine Notiz gespeichert wird. Die Stichwortsuche gewinnt weiterhin bei exakten Übereinstimmungen; semantische Ergebnisse erscheinen als „Beste Treffer“, wenn sie einen Mehrwert bieten. Wenn keine Embedding-Quelle verfügbar ist, fällt die Suche stillschweigend auf reine Stichwortsuche zurück.
Spracheingabe (macOS). Das Chat-Feld hat einen Mikrofon-Button für
lokale Spracherkennung (Speech-to-Text) über
parakeet.cpp. Erforderlich sind
ffmpeg (brew install ffmpeg) und ein parakeet-kompatibles GGUF-Modell.
Lade ein vorgefertigtes parakeet-cli für macOS von der
Releases-Seite herunter
und weise Persona beides mit PERSONA_STT_MODEL=/path/to/model.gguf und
PERSONA_STT_BIN=/path/to/parakeet-cli zu (auf Apple Silicon läuft das
Modell auf Metal).
Erscheinungsbild
Helles, dunkles oder System-Design unter Einstellungen → Erscheinungsbild. Das Design wird in deiner Konfiguration gespeichert und folgt, wenn es auf „System“ gesetzt ist, deinem macOS-Erscheinungsbild.
Entwicklung
npm run dev # Vite dev server (5173) + API server (4321), hot reload
npm run build # production build: server + CLI + web app
npm run typecheckAd-hoc-Testskripte (benötigen zuvor einen Build):
npm run build
node scripts/tool-test.mjs # unit-level tests for AI tools, tasks, fs
node scripts/mcp-test.mjs # E2E: MCP server via stdio (Persona tools over MCP)
node scripts/e2e-chat-test.mjs # E2E: AI chat performs file & task operations
node scripts/e2e-chat2-test.mjs # E2E: chat reads notes and cites sourcesDie E2E-Skripte erwarten einen Server, der gegen einen Wegwerf-Arbeitsbereich
läuft (z. B. HOME=$PWD/.testhome npm run dev:server in einem anderen
Terminal, sodass die Server-Konfiguration in .testhome/.persona/ landet).
MCP — Persona von Claude Code, Hermes, Cursor usw. aus verwenden
Persona ist ein MCP-Server. Jeder MCP-Client kann deinen Arbeitsbereich lesen/schreiben:
persona mcp --help
claude mcp add persona -- persona mcp # Claude Code
# Hermes/Cursor/Windsurf: { "mcpServers": { "persona": { "command": "persona", "args": ["mcp"] } } }Tools: 15 (list_folder, read_note, create_note, write_note, append_note, create_folder, move_file, rename_file, delete_file, list_tasks, create_task, update_task, delete_task, search, get_workspace_info) + Ressourcen (persona://workspace, persona://file/{path}) + Streamable HTTP unter http://127.0.0.1:4321/mcp.
Vollständige Einrichtung → docs/mcp.md.
Mitwirken
Eröffne ein Issue oder einen PR — Fehlerberichte, Feature-Ideen und Fragen sind alle willkommen. Richtlinien:
Halte das Local-First-Versprechen: Alles besteht aus einfachen Dateien — keine Konten, keine Cloud, kein Lock-in.
Der Server darf deine Dateien niemals an jemand anderen senden als an den von dir explizit konfigurierten KI-Anbieter; der Embedding-Index ist lokal.
Führe vor dem Eröffnen eines PRs
npm run typecheckundnpm run buildaus, und füge einenscripts/-Test hinzu, wenn du das Serververhalten änderst.Das Paket ist MIT-lizenziert; mit deinem Beitrag stimmst du denselben Bedingungen zu.
Architektur
persona CLI ── spawns ──▶ local Hono server (127.0.0.1:4321 — first free port)
│ REST API + SSE events
├─ filesystem (chokidar watcher)
├─ tasks (Markdown + frontmatter)
├─ AI (OpenAI-compatible, streaming)
└─ embeddings (semantic index, local JSON)
│
▼
React app (prebuilt, served by the server)Star History
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
No tool schema history has been recorded yet.
This server cannot be installed
Maintenance
Related MCP Connectors
Search, read, and write your Apple Notes from ChatGPT/Claude via a local Mac agent + MCP relay.
Markdown-based note-taking with a hosted MCP server. Your notes serve you and your AI.
- TaprootOAuthcom.taproothq
Persistent memory layer for AI tools. Save and recall notes across Claude and other MCP clients.
One memory, every AI. A shared, user-owned markdown memory your AI clients read and write over MCP.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceExposes local persistent memory as an MCP server with Markdown storage, PARA organization, Zettelkasten linking, and SQLite FTS5 search. Enables Claude and other MCP-compatible agents to store, organize, and retrieve knowledge with context-based recommendations through the Olima association engine.312MIT
- AlicenseNot gradedqualityAmaintenanceLocal-first knowledge base MCP server. Lets AI agents (Claude Code, Cursor, etc.) read and write your personal knowledge base through 20 MCP tools. Zero cloud dependency — all files stay on your machine.1,758664MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for AI agents to read, write, and organize notes in a local-first, human-in-the-loop note-taking app.62MIT
- AlicenseNot gradedqualityAmaintenanceLocal-first MCP server providing persistent markdown memory with persona engine and fast search, designed to unify AI assistant memory across Claude Code, Cowork, and Dispatch.211MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/jayamitkatariya/personacli'
If you have feedback or need assistance with the MCP directory API, please join our Discord server