Persona
Persona
Заметки, задачи и ИИ-чат, который знает ваши файлы. Всё хранится в одной папке с обычным Markdown на вашем компьютере.
$ personaЭто запускает локальный сервер и открывает ваше рабочее пространство в браузере. Никаких
аккаунтов, никакого облака, никакой базы данных. Если бы этот проект исчез завтра,
у вас всё равно остались бы все заметки и задачи в виде .md-файлов, которые можно открыть
чем угодно.
Почему ещё одно приложение для заметок?
Потому что я устал выбирать между удобным софтом и владением своими данными:
Persona | Obsidian | Notion | Logseq | |
Формат данных | обычный Markdown | Markdown + плагины | проприетарная облачная БД | org-mode/Markdown |
Полностью офлайн | ✅ | ✅ | ❌ | ✅ |
Встроенные задачи | ✅ | плагин | ✅ | базовые |
Локальный ИИ-чат | ✅ Ollama, без настройки | через облачные API-плагины | их облако | ❌ |
Голосовой ввод | ✅ локальный STT | ❌ | ❌ | ❌ |
Открытый исходный код | ✅ MIT | freemium, закрытый | закрытый | ✅ AGPL |
Я ежедневно пользовался Obsidian два года. Где-то на тридцатом плагине я понял, что поддерживаю настройку заметок больше, чем пишу в них. Persona — моя попытка сделать версию, где всё важное просто работает из коробки, а формат данных никогда не берёт вас в заложники.
Related MCP server: MindOS
Что вы получаете
Заметки в Markdown — файлы на диске в любой структуре папок, которая вам нравится. Редактируйте их из любого приложения; Persona следит за файловой системой и не отстаёт
Задачи — напишите
fix login bug #backend !! friday, и он разложит приоритет, тег проекта и срок выполнения в frontmatter. Включено канбан-представлениеИИ-чат — автоматически подключается к Ollama, если он запущен (бесплатно и приватно), или используйте любой OpenAI-совместимый API. Может создавать заметки и управлять задачами, а не только отвечать на вопросы
Семантический поиск — эмбеддинги вычисляются локально и хранятся внутри рабочего пространства
Голосовой ввод — локальное распознавание речи через parakeet.cpp на Apple Silicon
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Первый запуск проведёт вас через выбор папки рабочего пространства и, при желании,
подключение ИИ-модели. После этого достаточно просто persona.
Хотите, чтобы ИИ работал бесплатно и приватно?
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 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-интерфейс обслуживается Hono-сервером, Vite для сборки. Локальные эмбеддинги для поиска, parakeet.cpp для голоса, Ollama или любой OpenAI-совместимый endpoint для чата. Намеренно скучные технологии.
Участие в разработке
Приветствуются issues и PR, особенно баг-репорты из реального использования. Если что-то кажется неправильным, скорее всего так и есть; сообщите мне.
Лицензия
Если Persona помогает вам сохранить рассудок, звёздочка поможет другим людям найти проект.
Дополнительные возможности
Дополнение | Установка | Что вы получаете |
| Бесплатный приватный локальный ИИ — определяется автоматически, без API-ключа | |
|
| Голосовой ввод (запись + транскрибация в чате) |
parakeet model | Локальная модель распознавания речи для голосового ввода |
Для голосового ввода укажите Persona путь к вашему бинарнику parakeet и модели:
export PERSONA_STT_BIN=/path/to/parakeet-cli
export PERSONA_STT_MODEL=/path/to/model.gguf
personaРешение проблем
Симптом | Решение |
| Повторите |
| npm ≥11.16 блокирует скрипты пакетов по умолчанию — установите с |
| Ваш npm prefix не доступен для записи — установите Node через nvm или Homebrew (или используйте |
Сервер не запускается / ошибки порта | Выполните |
Чат говорит «no model configured» | Откройте Настройки → ИИ (⌘,) и добавьте провайдера или установите Ollama |
Вы запускаете | Сервер, возможно, уже запущен — нажмите ⌘K в браузере или завершите его командой |
Голосовой ввод не работает |
|
Первый запуск
При первом запуске persona короткий мастер настройки проведёт вас через три
шага в браузере:
Рабочее пространство — где Persona хранит ваши заметки (по умолчанию
~/Persona). ПапкиNotes/,Projects/и.persona/tasks/создаются автоматически.ИИ — необязательно. Запущенный Ollama определяется и подключается без настройки; в противном случае добавьте любой OpenAI-совместимый API-ключ. Можно пропустить в любой момент и настроить позже в Настройки → ИИ (⌘,).
Готово — создаётся заметка
Notes/Welcome.mdкак экскурсия по рабочему пространству: три вида, сочетания клавиш и терминальные команды. Откройте её снова в любой момент из палитры команд (⌘K → «Открыть приветственную заметку»).
Ничего никогда не перезаписывается: если в папке рабочего пространства уже есть файлы, они отображаются на боковой панели без изменений, а приветственная заметка создаётся только один раз.
Команды
Команда | Что делает |
| Запустить сервер при необходимости, открыть рабочее пространство в браузере |
| Запустить сервер при необходимости, открыть рабочее пространство в браузере |
| Добавить строку в сегодняшнюю заметку-журнал ( |
| Создать задачу (на естественном языке) без открытия браузера |
| Попросить ИИ просмотреть ваши открытые задачи (только предложения) |
| Общаться с ИИ из терминала, ответ выводится по мере генерации. Прикрепляйте файлы/папки/задачи с помощью |
| Создать/открыть сегодняшнюю заметку-журнал; |
| Искать файлы и задачи из терминала (нечёткий + семантический поиск) |
| Показать путь к текущему рабочему пространству |
| Проверка состояния: node, рабочее пространство, сервер, ИИ-конфигурация |
| Запустить Persona как MCP-сервер (stdio) для Claude Code, Hermes, Cursor и др. См. |
Что где находится
~/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 следит за файловой системой и синхронизирует автоматически.
Рабочие пространства
Write — дерево файлов + редактор Markdown (CodeMirror). Автосохранение, статус сохранения, предпросмотр в реальном времени (Edit / Split / Preview), переименование, перемещение, дублирование, удаление, drag & drop. Открывайте несколько заметок одновременно во вкладках (⌘W — закрыть, ⌘⇧[ / ⌘⇧] — переключаться); у каждой вкладки сохраняются собственная позиция прокрутки и история отмены. Теги, созданные ИИ: нажмите ⌘S (или кнопку ✨) — и Persona предложит теги для вашей заметки, которые автоматически добавляются в YAML frontmatter.
Tasks — быстрый личный список задач. Введите
Buy domain tomorrow #personal !в поле быстрого добавления — даты, проекты и приоритет будут разобраны автоматически. Повторяющиеся задачи тоже работают:Water plants every weekсама открывается заново со следующей датой выполнения, когда вы её завершаете. Нажмите Triage (или запуститеpersona triage) — и ИИ проверит ваши открытые задачи: отметит неверные приоритеты, отсутствующие сроки, проекты без тегов, устаревшие задачи и дубликаты — и применит каждое предложение одним кликом. Он никогда не изменит задачу без вашего одобрения.Pinboard — закрепляйте важные заметки или задачи (меню ⋯ в дереве файлов или в строке задачи), и они остаются закреплёнными вверху боковой панели на каждой вкладке. Нажмите на закреп, чтобы сразу перейти к нему; наведите указатель, чтобы открепить. Закрепы хранятся в
.persona/pins.jsonи переживают перезапуски.Chat — ИИ, который видит ваше рабочее пространство и может действовать в нём. Прикрепите контекст с помощью
@file.md,@folderили@tasksи спрашивайте о своей реальной работе. ИИ также может создавать, редактировать, перемещать и удалять заметки и папки, а также создавать, завершать, обновлять и удалять задачи от вашего имени — вы увидите небольшой статус-индикатор для каждого выполняемого действия.Agents — фоновые запуски ИИ для многошаговой работы. Дайте Persona задачу вроде «organize my inbox notes» — и она проработает её с помощью инструментов в реальном времени, не требуя держать чат открытым. Запуски сохраняются в
.persona/agents/; их можно отменить, повторить или удалить.Semantic search — ваши заметки локально преобразуются в эмбеддинги и ищутся по смыслу: «та штука про кемпинг, которую я писал» найдёт заметку, в которой упоминаются лес, палатка и дождь, — даже если в ней нет слова «кемпинг». Он обеспечивает работу палитры команд (⌘P),
persona searchи чата: когда вы не прикрепляете контекст, ассистент автоматически подтягивает заметки, наиболее релевантные вашему вопросу, и цитирует их.Modules — Focus, Journal, Today's Stuff и Agents можно включать и отключать в Настройки → Modules; включённые модули отображаются в боковой панели, отключённые остаются доступными через ⌘K.
Import — импортируйте экспорт Obsidian, Bear, Roam, Notion или обычных папок через Настройки → Import. Всё попадает в
Imported/<source>/и никогда не перезаписывает существующие заметки.
Клавиатура
Shortcut | Action |
| Палитра команд |
| Быстрый поиск файлов/задач |
| Write / Tasks / Chat |
| Новый файл |
| Новая задача |
| Новый черновик |
| Закрыть вкладку |
| Предыдущая / следующая вкладка |
| Сохранить |
| Настройки |
| Показать / скрыть боковую панель |
| Закрыть палитру / модальное окно |
AI
Подойдёт любой OpenAI-совместимый провайдер — OpenAI, OpenRouter, Ollama, локальные модели, собственные эндпоинты. Настройте провайдера, базовый URL, модель и API-ключ в Настройки → AI. Ключ хранится в связке ключей macOS (при отсутствии — в конфигурационном файле с правами 0600) и отправляется только выбранному вами провайдеру.
Никакой настройки с Ollama. Если запущен локальный экземпляр Ollama (http://127.0.0.1:11434 или там, куда указывает $OLLAMA_HOST), Persona обнаруживает его автоматически и подключается без API-ключа и без конфигурации. Она выбирает подходящую чат-модель из установленных у вас. Явно настроенный провайдер всегда имеет приоритет над автоопределением, а persona doctor сообщает, что было обнаружено.
Чат-ассистент умеет выполнять запись: он может создавать и редактировать заметки, создавать папки, перемещать и переименовывать файлы, а также управлять вашими задачами — создавать, обновлять, завершать и удалять их. Он удаляет файлы или папки, только если вы явно попросите об этом. Провайдеры без поддержки инструментов автоматически переходят в режим чата только для чтения.
Semantic search. Заметки разбиваются на фрагменты, локально преобразуются в эмбеддинги и сохраняются в .persona/embeddings/. Эмбеддинги берутся из следующих источников в порядке приоритета:
Явный базовый URL для эмбеддингов (необязательно, Настройки → AI) — укажите любого провайдера с поддержкой эмбеддингов (OpenRouter, SiliconFlow, локальный Ollama…).
Запущенный локальный Ollama с моделью эмбеддингов — например,
ollama pull all-minilmилиnomic-embed-text— API-ключ не требуется.В противном случае — эндпоинт вашего чат-провайдера.
Индекс перестраивается в фоне при запуске сервера, при изменении вашего API-ключа или модели эмбеддингов, а также инкрементально при каждом сохранении заметки. Поиск по ключевым словам по-прежнему выигрывает при точных совпадениях; семантические результаты появляются как «Best matches», когда они добавляют ценность. Если источник эмбеддингов недоступен, поиск незаметно переключается на поиск только по ключевым словам.
Голосовой ввод (macOS). В окне чата есть кнопка микрофона для локального распознавания речи через parakeet.cpp. Требуются ffmpeg (brew install ffmpeg) и GGUF-модель, совместимая с parakeet. Скачайте готовый parakeet-cli для macOS со страницы релизов и укажите Persona оба компонента с помощью PERSONA_STT_MODEL=/path/to/model.gguf и PERSONA_STT_BIN=/path/to/parakeet-cli (на Apple Silicon модель работает на Metal).
Внешний вид
Светлая, тёмная или системная тема — в Настройки → Внешний вид. Тема сохраняется в вашей конфигурации и следует за оформлением macOS, когда установлено значение System.
Разработка
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 тестовые скрипты (нужна предварительная сборка):
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 sourcesE2E-скрипты ожидают, что сервер запущен с временным рабочим пространством (например, HOME=$PWD/.testhome npm run dev:server в другом терминале, чтобы конфиг сервера оказался в .testhome/.persona/).
MCP — используйте Persona из Claude Code, Hermes, Cursor и т. д.
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 — приветствуются сообщения об ошибках, идеи функций и вопросы. Рекомендации:
Сохраняйте принцип local-first: всё — это простые файлы, никаких аккаунтов, облака и привязки.
Сервер никогда не должен отправлять ваши файлы кому-либо, кроме явно настроенного вами ИИ-провайдера; индекс эмбеддингов локальный.
Перед открытием 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)История звёзд
This server cannot be deployed
Maintenance
Related MCP Connectors
Notes and memory assistant: one Markdown vault that Claude, ChatGPT and any MCP client can share.
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.
Persistent memory layer for AI tools. Save and recall notes across Claude and other MCP clients.
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.10 npm2MIT
- 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,758 npm704MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for AI agents to read, write, and organize notes in a local-first, human-in-the-loop note-taking app.1 npm2MIT
- 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.25 npm1MIT