Skip to main content
Glama

Persona

GitHub stars License: MIT Node macOS

Заметки, задачи и ИИ-чат, который знает ваши файлы. Всё хранится в одной папке с обычным 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 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-интерфейс обслуживается Hono-сервером, Vite для сборки. Локальные эмбеддинги для поиска, parakeet.cpp для голоса, Ollama или любой OpenAI-совместимый endpoint для чата. Намеренно скучные технологии.

Участие в разработке

Приветствуются issues и PR, особенно баг-репорты из реального использования. Если что-то кажется неправильным, скорее всего так и есть; сообщите мне.

Лицензия

MIT


Если Persona помогает вам сохранить рассудок, звёздочка поможет другим людям найти проект.

Дополнительные возможности

Дополнение

Установка

Что вы получаете

Ollama

brew install ollama && ollama pull llama3.2

Бесплатный приватный локальный ИИ — определяется автоматически, без API-ключа

ffmpeg

brew install ffmpeg

Голосовой ввод (запись + транскрибация в чате)

parakeet model

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 prefix не доступен для записи — установите Node через nvm или Homebrew (или используйте sudo как крайнюю меру)

Сервер не запускается / ошибки порта

Выполните persona doctor, затем проверьте ~/.persona/logs/server.log

Чат говорит «no model configured»

Откройте Настройки → ИИ (⌘,) и добавьте провайдера или установите Ollama

Вы запускаете persona, и ничего не происходит

Сервер, возможно, уже запущен — нажмите ⌘K в браузере или завершите его командой pkill -f "dist/server/index" и повторите попытку

Голосовой ввод не работает

ffmpeg должен быть установлен, а PERSONA_STT_MODEL должен указывать на корректный GGUF

Первый запуск

При первом запуске persona короткий мастер настройки проведёт вас через три шага в браузере:

  1. Рабочее пространство — где Persona хранит ваши заметки (по умолчанию ~/Persona). Папки Notes/, Projects/ и .persona/tasks/ создаются автоматически.

  2. ИИ — необязательно. Запущенный Ollama определяется и подключается без настройки; в противном случае добавьте любой OpenAI-совместимый API-ключ. Можно пропустить в любой момент и настроить позже в Настройки → ИИ (⌘,).

  3. Готово — создаётся заметка Notes/Welcome.md как экскурсия по рабочему пространству: три вида, сочетания клавиш и терминальные команды. Откройте её снова в любой момент из палитры команд (⌘K → «Открыть приветственную заметку»).

Ничего никогда не перезаписывается: если в папке рабочего пространства уже есть файлы, они отображаются на боковой панели без изменений, а приветственная заметка создаётся только один раз.

Команды

Команда

Что делает

persona

Запустить сервер при необходимости, открыть рабочее пространство в браузере

persona open

Запустить сервер при необходимости, открыть рабочее пространство в браузере

persona note "text"

Добавить строку в сегодняшнюю заметку-журнал (Notes/YYYY-MM-DD.md)

persona task "Buy domain tomorrow #personal !!"

Создать задачу (на естественном языке) без открытия браузера

persona triage

Попросить ИИ просмотреть ваши открытые задачи (только предложения)

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

Общаться с ИИ из терминала, ответ выводится по мере генерации. Прикрепляйте файлы/папки/задачи с помощью @file.md, @folder, @tasks

persona today [--open]

Создать/открыть сегодняшнюю заметку-журнал; --open открывает браузер

persona search "query"

Искать файлы и задачи из терминала (нечёткий + семантический поиск)

persona path

Показать путь к текущему рабочему пространству

persona doctor

Проверка состояния: node, рабочее пространство, сервер, ИИ-конфигурация

persona mcp

Запустить Persona как MCP-сервер (stdio) для Claude Code, Hermes, Cursor и др. См. 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 следит за файловой системой и синхронизирует автоматически.

Рабочие пространства

  • 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

⌘K

Палитра команд

⌘P

Быстрый поиск файлов/задач

⌘1 ⌘2 ⌘3

Write / Tasks / Chat

⌘N

Новый файл

⌘⇧N

Новая задача

⌘T

Новый черновик

⌘W

Закрыть вкладку

⌘⇧[ ⌘⇧]

Предыдущая / следующая вкладка

⌘S

Сохранить

⌘,

Настройки

⌘⇧B

Показать / скрыть боковую панель

Esc

Закрыть палитру / модальное окно

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/. Эмбеддинги берутся из следующих источников в порядке приоритета:

  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) и 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 typecheck

Ad-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 sources

E2E-скрипты ожидают, что сервер запущен с временным рабочим пространством (например, 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)

История звёзд

Star History Chart

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