Skip to main content
Glama

Persona

GitHub stars License: MIT Node macOS

ノート、タスク、そしてあなたのファイルを認識するAIチャット。すべては、あなたのマシン上のプレーンなMarkdownの1つのフォルダに保存されます。

$ persona

これでローカルサーバーが起動し、ブラウザでワークスペースが開きます。アカウントもクラウドもデータベースも不要です。たとえ明日このプロジェクトが消えても、すべてのノートとタスクは、どんなアプリでも開ける .md ファイルとして残っています。

なぜ別のノートアプリなのか?

素晴らしいソフトウェアと、自分のデータを所有することの間で、私はいつも選択を迫られていたからです。

Persona

Obsidian

Notion

Logseq

データ形式

プレーンなMarkdown

Markdown + プラグイン

プロプライエタリなクラウドDB

org-mode/Markdown

完全オフラインで動作

✅

✅

❌

✅

内蔵タスク

✅

プラグイン

✅

基本

ローカルAIチャット

✅ Ollama、設定不要

クラウドAPIプラグイン経由

自社クラウド

❌

音声入力

✅ ローカルSTT

❌

❌

❌

オープンソース

✅ MIT

フリーミアム、クローズド

クローズド

✅ AGPL

私は2年間、毎日Obsidianを使っていました。プラグインが30個くらいになった頃、ノート環境のメンテナンスに時間を取られ、実際に書くことよりも手間がかかっていることに気づきました。Personaは、重要なことがすべてすぐに機能し、データ形式に決して縛られないバージョンを目指した試みです。

Related MCP server: MindOS

できること

  • Markdownノート — お好みのフォルダ構成でディスク上に保存されるファイル。任意のアプリで編集できます。Personaはファイルシステムを監視して追従します

  • タスク — fix login bug #backend !! friday と書くと、優先度・プロジェクトタグ・期日をfrontmatterに整理します。カンバンビュー付き

  • AIチャット — 起動中なら Ollama に自動接続(無料・プライベート)。またはOpenAI互換APIを使用できます。質問に答えるだけでなく、ノートの作成やタスクの管理も可能です

  • セマンティック検索 — 埋め込みはローカルで計算され、ワークスペース内に保存されます

  • 音声入力 — Apple Siliconでparakeet.cppを使ったローカル音声認識

  • MCPサーバー — Claude Code、Cursor、その他のエージェントがワークスペースを直接読み書きできます

スクリーンショット

クイックスタート(macOS)

Node.js 20+(brew install node)と git が必要です。

git clone https://github.com/jayamitkatariya/personacli.git
cd personacli
npm install --allow-scripts=persona
npm install -g . --allow-scripts=persona
persona

初回実行時は、ワークスペースフォルダの選択と、任意でAIモデルの接続を案内します。その後は persona を実行するだけです。

AIを無料・プライベートで使うには

brew install ollama && ollama pull llama3.2
persona   # detects ollama automatically, no config
persona doctor   # health check: node, workspace, server, AI config
persona path     # print workspace path

アップデート:

cd personacli && git pull
npm install --allow-scripts=persona
npm install -g . --allow-scripts=persona

アンインストール:

npm uninstall -g persona
pkill -f "dist/server/index"
rm -rf ~/.persona

トラブルシューティングの詳細は、このREADMEの後半にあります。

技術スタック

TypeScriptでエンドツーエンドを構成。React UIはHonoサーバーが配信し、ビルドはVite。検索にはローカル埋め込み、音声にはparakeet.cpp、チャットにはOllamaまたは任意のOpenAI互換エンドポイントを使用。あえて地味な技術を採用しています。

コントリビューション

IssueとPRを歓迎します。特に実際の使用でのバグ報告が助かります。何かおかしいと感じたら、それはおそらく実際におかしいのです。教えてください。

ライセンス

MIT


Personaが少しでも役に立つなら、スターを付けていただけると他の人にも見つけてもらいやすくなります。

オプションの追加機能

追加機能

インストール方法

得られるもの

Ollama

brew install ollama && ollama pull llama3.2

無料・プライベートなローカルAI — 自動検出され、APIキー不要

ffmpeg

brew install ffmpeg

音声入力(チャットでの録音+文字起こし)

parakeetモデル

parakeet.cpp releases

音声入力用のローカル音声認識モデル

音声入力を使うには、Personaにparakeetのバイナリとモデルを指定します:

export PERSONA_STT_BIN=/path/to/parakeet-cli
export PERSONA_STT_MODEL=/path/to/model.gguf
persona

トラブルシューティング

症状

対処法

persona: command not found

npm install -g . --allow-scripts=persona を再度実行し、npm config get prefix が PATH に含まれているか確認してください

npm warn allow-scripts またはインストール後に persona バイナリがない

npm ≥11.16 はパッケージスクリプトをデフォルトでブロックします — --allow-scripts=persona を付けてインストールするか(または npm config set allow-scripts=persona --location=user を実行して)再インストールしてください

npm install -g . が EACCES で失敗する

npmのプレフィックスが書き込み可能ではありません — nvm または Homebrew でNodeをインストールしてください(最後の手段として sudo を使用)

サーバーが起動しない / ポートエラー

persona doctor を実行し、~/.persona/logs/server.log を確認してください

チャットが「モデルが設定されていません」と表示する

設定 → AI(⌘,)を開いてプロバイダーを追加するか、Ollamaをインストールしてください

persona を実行しても何も起きない

サーバーがすでに起動している可能性があります — ブラウザで⌘Kを押すか、pkill -f "dist/server/index" で終了して再試行してください

音声入力が失敗する

ffmpeg がインストールされていて、PERSONA_STT_MODEL が有効なGGUFを指している必要があります

初回実行

persona を初めて実行すると、ブラウザで短いセットアップガイドが3つのステップを案内します:

  1. ワークスペース — Personaがノートを保存する場所(デフォルトは ~/Persona)。Notes/、Projects/、.persona/tasks/ が自動的に作成されます。

  2. AI — 任意。実行中の Ollama を自動検出して設定なしで接続します。それ以外の場合は任意のOpenAI互換APIキーを追加します。いつでもスキップして、後で設定 → AI(⌘,)で設定できます。

  3. 完了 — Notes/Welcome.md というノートが、ワークスペースのガイドツアーとして作成されます。3つのビュー、キーボードショートカット、ターミナルコマンドが含まれます。コマンドパレット(⌘K → 「Welcomeノートを開く」)からいつでも再度開けます。

既存のファイルは決して上書きされません。ワークスペースフォルダにすでにファイルがある場合、それらはそのままサイドバーに表示され、ウェルカムノートは一度だけ作成されます。

コマンド

コマンド

説明

persona

必要に応じてサーバーを起動し、ブラウザでワークスペースを開く

persona open

必要に応じてサーバーを起動し、ブラウザでワークスペースを開く

persona note "text"

今日のジャーナルノート(Notes/YYYY-MM-DD.md)に行を追加する

persona task "Buy domain tomorrow #personal !!"

ブラウザを開かずに(自然言語で)タスクを作成する

persona triage

オープンなタスクをAIにレビューさせる(提案のみ)

persona ask "what's left on the PRD?"

ターミナルからAIとチャット。回答はインラインでストリーム表示。@file.md、@folder、@tasks でファイル/フォルダ/タスクを添付できる

persona today [--open]

今日のジャーナルノートを作成/開く。--open でブラウザを起動

persona search "query"

ターミナルからファイルとタスクを検索(あいまい+セマンティック)

persona path

現在のワークスペースパスを表示する

persona doctor

ヘルスチェック:node、ワークスペース、サーバー、AI設定

persona mcp

Claude Code、Hermes、CursorなどのためにPersonaをMCPサーバー(stdio)として実行する。docs/mcp.md を参照

何がどこに保存されるか

~/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)

タスクも単なるファイルです:

---
type: task
status: todo
priority: high
due: 2026-08-12
project: Personal
---
Finish Persona PRD

任意のエディターやFinderで編集できます。Personaがファイルシステムを監視し、自動的に同期します。

ワークスペース

  • ノート — ファイルツリー + Markdownエディター(CodeMirror)。オートセーブ、保存 状態、ライブプレビュー(編集 / 分割 / プレビュー)、名前の変更、移動、複製、 削除、ドラッグ & ドロップ。複数のノートをタブで同時に開けます(⌘Wで閉じる、 ⌘⇧[ / ⌘⇧] で切り替え)。各タブは独自のスクロール位置と元に戻す履歴を保持します。 AI生成タグ: ⌘S(または ✨ ボタン)を押すと Persona がノートにタグを提案し、YAMLフロントマターとして自動的に追加します。

  • タスク — 高速な個人タスクリスト。クイック追加ボックスに Buy domain tomorrow #personal ! と入力すると、日付、プロジェクト、優先度が自動で解析されます。 繰り返しタスクにも対応: Water plants every week は完了すると 次の期限日付きで自動的に再オープンします。トリアージ を押す(または persona triage を実行)と、AIが未完了タスクをレビューし — 誤った優先度、 期限の欠落、タグなしプロジェクト、古いタスク、重複を検出 — 各提案をワンクリックで適用します。承認なしにタスクを変更することはありません。

  • ピンボード — 重要なノートやタスクをピン留めすると(ファイルツリーまたはタスク行の ⋯ メニュー)、 すべてのタブでサイドバーの先頭に固定されます。 ピンをクリックするとそこに直接ジャンプし、ホバーでピン留めを解除できます。 ピンは .persona/pins.json に保存され、再起動後も保持されます。

  • チャット — ワークスペースを参照して操作できるAI。@file.md、@folder、@tasks で コンテキストを添付して、実際の作業について質問できます。 AIはノートやフォルダの作成、編集、移動、削除、およびタスクの作成、完了、更新、削除を 代行することもできます — 実行した各アクションには小さなステータスチップが表示されます。

  • エージェント — 複数ステップの作業を行うバックグラウンドAI。Personaに 「受信トレイのノートを整理して」のようなタスクを与えると、チャットを開いたままにせず、 ツールを使ってライブで処理を進めます。実行内容は .persona/agents/ に保存され、 キャンセル、再試行、削除が可能です。

  • セマンティック検索 — ノートはローカルで埋め込み化され、意味で検索されます。 そのため「キャンプについて書いたあれ」のような検索でも、森やテントや雨について 言及しているノートを見つけられます — たとえ「キャンプ」という言葉がなくても。 この機能はコマンドパレット(⌘P)、persona search、チャットを支えています。 コンテキストを添付しない場合、アシスタントが質問に最も関連するノートを自動的に取得し、引用します。

  • モジュール — フォーカス、ジャーナル、今日のあれこれ、エージェント は 設定 → モジュール から切り替えられます。 有効なモジュールはサイドバーに表示され、無効なモジュールは ⌘K から引き続きアクセスできます。

  • インポート — Obsidian、Bear、Roam、Notion、またはプレーンフォルダの書き出しを 設定 → インポート から取り込めます。すべてのデータは Imported/<source>/ の下に配置され、 既存のノートを上書きすることはありません。

キーボード

ショートカット

アクション

⌘K

コマンドパレット

⌘P

ファイル/タスクのクイック検索

⌘1 ⌘2 ⌘3

ノート / タスク / チャット

⌘N

新規ファイル

⌘⇧N

新規タスク

⌘T

新規下書きノート

⌘W

タブを閉じる

⌘⇧[ ⌘⇧]

前のタブ / 次のタブ

⌘S

保存

⌘,

設定

⌘⇧B

サイドバーの表示切り替え

Esc

パレット / モーダルを閉じる

AI

OpenAI 互換のプロバイダーなら何でも使えます — OpenAI、OpenRouter、Ollama、ローカルモデル、カスタムエンドポイント。プロバイダー、ベースURL、モデル、APIキーは 設定 → AI で設定します。キーはmacOS Keychainに保存され(0600パーミッションの設定ファイルにフォールバック)、選択したプロバイダーにのみ送信されます。

Ollamaならセットアップ不要。 ローカルのOllamaインスタンスが実行中の場合(http://127.0.0.1:11434、または $OLLAMA_HOST が指す場所)、Personaは自動的に検出し、APIキーや設定なしで接続します。インストール済みのモデルから適切なチャットモデルを選びます。明示的に設定したプロバイダーは常に自動検出より優先されます。persona doctor は検出された内容を報告します。

チャットアシスタントは書き込み対応です。ノートの作成・編集、フォルダの作成、ファイルの移動・名前変更、タスクの管理(作成、更新、完了、削除)ができます。ファイルやフォルダの削除は、明示的に依頼した場合のみ行います。ツールをサポートしていないプロバイダーでは、自動的に読み取り専用チャットにフォールバックします。

セマンティック検索。 ノートはチャンク分割され、ローカルで埋め込み化されて .persona/embeddings/ に保存されます。埋め込みは以下の優先順位で取得されます:

  1. 明示的な埋め込みベースURL(オプション、設定 → AI)— 埋め込み対応プロバイダー(OpenRouter、SiliconFlow、ローカルOllamaなど)を指定します。

  2. 実行中のローカルOllama(埋め込みモデルあり) — 例: ollama pull all-minilm や nomic-embed-text — APIキーは不要です。

  3. それ以外の場合は、チャットプロバイダーのエンドポイント。

インデックスは、サーバー起動時、APIキーや埋め込みモデルの変更時にバックグラウンドで再構築され、ノートが保存されるたびに増分更新されます。キーワード検索は完全一致で引き続き優先されます。セマンティック検索の結果は、価値がある場合に「Best matches」として表示されます。埋め込みソースがない場合、検索は自動的にキーワードのみにフォールバックします。

音声入力(macOS)。 チャットボックスには、parakeet.cpp によるローカルの音声テキスト変換用のマイクボタンがあります。ffmpeg(brew install ffmpeg)と、parakeet互換のGGUFモデルが必要です。macOS用のビルド済み parakeet-cli を リリースページ から入手し、PERSONA_STT_MODEL=/path/to/model.gguf と PERSONA_STT_BIN=/path/to/parakeet-cli でPersonaにそれぞれ指定します(Apple SiliconではモデルはMetal上で動作します)。

外観

設定 → 外観 でライト、ダーク、システムテーマを選択できます。テーマは設定ファイルに保存され、System に設定すると macOS の外観に追従します。

開発

npm run dev        # Vite dev server (5173) + API server (4321), hot reload
npm run build      # production build: server + CLI + web app
npm run typecheck

アドホックなテストスクリプト(事前にビルドが必要):

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 sources

E2Eスクリプトは、使い捨てワークスペースに対してサーバーが実行されていることを前提としています(例: 別のターミナルで HOME=$PWD/.testhome npm run dev:server を実行すると、サーバーの設定が .testhome/.persona/ に置かれます)。

MCP — Claude Code、Hermes、Cursor などから Persona を使う

PersonaはMCPサーバーです。任意のMCPクライアントがあなたのワークスペースを読み書きできます:

persona mcp --help
claude mcp add persona -- persona mcp   # Claude Code
# Hermes/Cursor/Windsurf: { "mcpServers": { "persona": { "command": "persona", "args": ["mcp"] } } }

ツール: 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)+ リソース(persona://workspace, persona://file/{path})+ Streamable HTTP(http://127.0.0.1:4321/mcp)。

完全なセットアップ → docs/mcp.md。

コントリビューション

issue または PR を開いてください — バグ報告、機能アイデア、質問はすべて歓迎します。ガイドライン:

  • ローカルファーストの約束を守る: すべてがプレーンファイルであり、アカウントもクラウドもベンダーロックインもないこと。

  • サーバーは、明示的に設定したAIプロバイダー以外にあなたのファイルを送信してはなりません。埋め込みインデックスはローカルです。

  • PRを開く前に npm run typecheck と npm run build を実行し、サーバーの動作に変更を加える場合は scripts/ テストを追加してください。

  • パッケージはMITライセンスです。コントリビュートすることで、同じ条件に同意したことになります。

アーキテクチャ

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)

スター履歴

スター履歴チャート

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Exposes 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.
    10 npm
    2
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Local-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,758 npm
    704
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server for AI agents to read, write, and organize notes in a local-first, human-in-the-loop note-taking app.
    1 npm
    2
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Local-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.
    25 npm
    1
    MIT