Skip to main content
Glama

Alcove

CI Gitleaks Project Health Coverage Pages version Python uv Ruff License: MIT

About The Project

Alcove keeps personal knowledge work inspectable, portable, and agent-friendly. It stores user data in local Markdown, YAML, and JSON, while providing governed CLI/MCP write paths and broad AI-led read paths.

The core model:

Read  -> search candidates, inspect local evidence, synthesize with context
Write -> route through Alcove CLI/MCP contracts, update indexes, validate

Data ownership is explicit:

  • ~/.alcove stores global memory, indexes, service state, dashboard snapshots, radars, publishers, automations, and usage rollups.

  • Managed knowledge bases live wherever the user chooses and are registered under ~/.alcove/knowledge-bases/.

  • Mounts and connectors index external sources without taking ownership of the original data.

  • The dashboard and Apple Notes publisher are derived views, not source-of-truth stores.

Related MCP server: brain2

Features

  • Managed knowledge bases — inbox capture, manual drafts, archive, OKF notes, taxonomy, validation, and indexed retrieval.

  • Global personal memory — pins, prompts, tasks, ideas, routines, and local project aliases under Alcove Home.

  • External knowledge sources — read-only mounts plus Apple Notes, GitHub Stars, and Chrome Bookmarks connectors.

  • Agent entry modes — Hub workspace, lightweight global MCP, managed-KB workspace, business workspace OKF, and local service runtime.

  • Configurable radars and monitors — scheduled information reports, watched feeds/pages, blog discovery, optional capture, optional AI summary, and Telegram/Feishu/tmux-claude-bot notification sinks.

  • Local dashboard — browser-facing workbench generated from local data.

  • External readable mirrors — Apple Notes publishing for selected personal memory views.

  • Health and repair — cross-module data checks, OKF validation, safe index rebuilds, deep local maintenance, and agent smoke/eval hooks.

Built With

  • Language / runtime — Python 3.12+

  • Packaging / environment — uv

  • CLI / MCP — argparse, FastMCP

  • Data formats — Markdown + YAML frontmatter, JSON, YAML

  • Quality gates — Ruff, mypy, pytest, pytest-cov, pip-audit, gitleaks

Architecture

Codex / Claude Code / CLI / MCP / Dashboard
                    │
                    ▼
             Alcove Application
                    │
   ┌────────────────┼────────────────┐
   │                │                │
Managed KBs   Global Memory   External Indexes
 inbox          pins           mounts
 archive        prompts        connectors
 OKF notes      tasks          fetch refs
 validation     projects       OKF mirrors
   │                │                │
   └────────────────┼────────────────┘
                    ▼
       Global OKF Catalog / Search Rows
                    │
        Dashboard / Publishers / Service

Key design rules:

  • Reads are broad. Agents can search, inspect OKF files, follow source refs, fetch connector details, and read mounted evidence.

  • Writes are narrow. Durable mutations should go through Alcove CLI/MCP so frontmatter, provenance, indexes, activity logs, and health checks remain consistent.

  • Derived files are disposable. Rebuild dashboard snapshots, usage rollups, JSON indexes, and OKF catalogs from source-of-truth data.

See docs/architecture.md and docs/read-write-model.md for the full model.

Getting Started

Installation

uv tool install git+https://github.com/OctopusGarage/alcove.git
alcove --version

For local development:

git clone https://github.com/OctopusGarage/alcove.git
cd alcove
uv sync
uv run alcove --version
uv tool install --force -e .

First Setup

alcove home init
alcove kb add research_notes /path/to/research_notes
alcove hub init ~/AlcoveHub --default-kb research_notes
alcove hub install ~/AlcoveHub --default-kb research_notes
alcove workspace init family --default-kb research_notes
alcove workspace okf init family --json
alcove global install --default-kb research_notes
alcove kb install research_notes

Entry profiles:

Mode

Purpose

Hub workspace

Main AI workspace for broad personal knowledge work.

Business workspace

Lightweight family/work/travel-style agent scene under the Hub concept.

Global MCP

Lightweight search/save access from unrelated projects plus default background Apple Notes publishing.

Managed KB workspace

Focused capture, inbox review, and OKF note workflows.

Local service

launchd dashboard server and deterministic scheduler ticks.

Development link mode keeps Alcove-owned skills and commands symlinked to the repository templates:

alcove hub install ~/AlcoveHub --default-kb research_notes --link
alcove workspace install family --link
alcove kb install research_notes --link

Core Workflows

Managed KB

alcove inbox --kb research_notes peek
alcove inbox --kb research_notes manual-add "Manual Thought" \
  --content "Copied note text" \
  --source "chat://manual"
alcove knowledge --kb research_notes note-source \
  --platform web \
  --title "Example" \
  --topic agent-engineering/agent-harness \
  --summary "Summary"
alcove search "Example" --kb research_notes

Global Memory

alcove pin add "Useful Pattern" --description "Short reusable note" --tag reference
alcove prompt propose "Code Review Lens" --content "Review the diff for regressions..." --tag review
alcove prompt save --proposal-id <proposal-id>
alcove prompt recommend "review a dashboard regression before shipping"
alcove prompt compose "review a dashboard regression before shipping"
alcove prompt audit --json
alcove task add "Wire MCP search" --priority high --tag mcp
alcove project add alcove /path/to/alcove --note "Personal information core"

External Indexes

alcove mount add /path/to/repos --name repos --type local-folder --profile docs --tag repos
alcove mount scan repos --dry-run --json
alcove mount scan repos --json
alcove connector github-stars import-url "https://github.com/octocat?tab=stars" --json
alcove connector chrome-bookmarks import-local --tag bookmarks --json
alcove connector apple-notes import-local --tag apple-notes --json
alcove connector status --json

Mount profiles keep local repository indexes focused. Use docs for README and documentation-heavy repositories, site for blog/site content, notes for personal Markdown folders, and capture-bundles for Clipsmith-style captured article folders. Add --include and --exclude when a specific mount needs custom rules.

Radars, Watchers, and Blogs

alcove radar preset list --json
alcove radar init tech-news --from-preset tech-news --json
alcove radar run tech-news --force --ai --notify --json
alcove watch add "Example Blog" https://example.com/feed.xml --kind rss --kb research_notes
alcove blog check --stale --json

Dashboard and Publishers

alcove dashboard --home ~/.alcove build
alcove serve --dashboard --home ~/.alcove --port 8765
alcove global install --default-kb research_notes
alcove publish init apple-notes --root-folder "iCloud/Alcove" --json
alcove publish run apple-notes --json

alcove global install initializes the default Apple Notes publisher and installs the scheduler LaunchAgent so due publisher runs happen through background alcove service tick. Alcove writes to mirrored sources mark the publisher dirty, so the next scheduler tick can re-export changed Notes before the normal 24-hour TTL. Use alcove publish run apple-notes when an immediate manual sync is needed.

Operations

Run a normal health check:

alcove health --home ~/.alcove --json
alcove health --home ~/.alcove --kb research_notes --fix --json

Run a local full-maintenance pass:

alcove health --home ~/.alcove --fix --deep --json

--deep rescans mounts, rebuilds usage rollups, rebuilds the dashboard snapshot, and rebuilds the global OKF catalog. Connector refresh remains explicit:

alcove health --home ~/.alcove --fix --deep --refresh-stale-connectors --json

Serve deterministic background work through launchd:

alcove service install --dashboard --scheduler --load
alcove service status
alcove service tick --json

Back up managed KB roots and ~/.alcove outside the Alcove runtime. Recommended tools:

Documentation

Development

uv sync
uv run ruff check .
uv run ruff format --check .
uv run mypy
uv run pytest
scripts/verify/check.sh

Coverage is generated as coverage.xml by pytest and uploaded in CI from the Ubuntu matrix job. See docs/coverage.md for Codecov setup.

License

Distributed under the MIT License. See LICENSE.

Available Tools

63 tools
alcove_connector_apple_notes_import_localC

Export local Notes.app notes into Alcove, then index them.

Inputs: home, tags, source_id, workspace, +1 more. Returns: object

alcove_connector_apple_notes_indexC

Index a deterministic Apple Notes export directory.

Inputs: export_dir (required), home, tags, workspace. Returns: object

alcove_connector_fetchC

Fetch detail for an indexed connector item.

Inputs: item_path (required), home, workspace. Returns: object

alcove_connector_github_stars_import_urlC

Fetch starred repositories from a GitHub stars page or username, then index them.

Inputs: source (required), home, tags, limit, +3 more. Returns: object

alcove_connector_github_stars_indexC

Index a GitHub Stars JSON export.

Inputs: export_file (required), home, tags, workspace. Returns: object

alcove_connector_refreshD

Refresh registered connector sources.

Inputs: home, connector, source_id, workspace, +1 more. Returns: object

alcove_connector_statusC

Show registered connector sources and freshness status.

Inputs: home, connector, workspace. Returns: object

alcove_doctorC

Check managed knowledge base health.

Inputs: workspace. Returns: object

alcove_export_allC

Export Alcove Home and all registered managed knowledge bases.

Inputs: output_dir (required), home. Returns: object

alcove_export_globalC

Export Alcove Home global data.

Inputs: output_dir (required), home. Returns: object

alcove_export_kbC

Export a registered managed knowledge base.

Inputs: kb (required), output_dir (required), home. Returns: object

alcove_gardenerC

Scan Alcove knowledge health and optionally prune safe issues.

Inputs: prune, workspace. Returns: object

alcove_get_topicC

Return a topic overview and active Alcove docs for that topic.

Inputs: topic (required), limit, workspace. Returns: object

alcove_idea_addC

Add a low-friction idea.

Inputs: title (required), home, tags, notes, +1 more. Returns: object

alcove_idea_listC

List low-friction ideas.

Inputs: home, status, workspace. Returns: object

alcove_idea_promoteC

Promote an idea into a concrete task.

Inputs: idea_id (required), due, home, notes, +2 more. Returns: object

alcove_inbox_archiveC

Archive an inbox item as an OKF Source.

Inputs: name (required), topic (required), tags, summary, +4 more. Returns: object

alcove_inbox_deleteC

Delete or preview deleting an inbox item.

Inputs: name (required), confirm, workspace. Returns: object

alcove_inbox_manual_addC

Add manual content to a managed knowledge base inbox.

Inputs: title (required), content (required), source, workspace. Returns: object

alcove_inbox_noteC

Archive an inbox item and write a knowledge note.

Inputs: name (required), topic (required), summary (required), why, +9 more. Returns: object

alcove_inbox_peekC

Inspect the oldest pending Alcove inbox item.

Inputs: workspace. Returns: object

alcove_inbox_readC

Read a managed knowledge base inbox item.

Inputs: name (required), workspace. Returns: object

alcove_inbox_todoC

Move an inbox item to managed knowledge base todo.

Inputs: name (required), reason, workspace. Returns: object

alcove_knowledge_add_entityD

Add an OKF Entity.

Inputs: name (required), topic (required), kind, tags, +5 more. Returns: object

alcove_knowledge_add_noteC

Add a standalone OKF Knowledge Concept.

Inputs: title (required), topic (required), tags, summary, +1 more. Returns: object

alcove_knowledge_add_questionC

Add an OKF Question.

Inputs: topic (required), question (required), tags, answer, +2 more. Returns: object

alcove_knowledge_promoteC

Promote an OKF Source into a Knowledge Concept.

Inputs: source (required), topic, summary, workspace. Returns: object

alcove_knowledge_refreshD

Refresh a topic from active sources.

Inputs: topic (required), summary, in_place, workspace. Returns: object

alcove_knowledge_topicsC

List known OKF topics, tags, and domains.

Inputs: workspace. Returns: object

alcove_mount_addC

Add a mounted external source.

Inputs: path (required), home, name, tags, +2 more. Returns: object

alcove_mount_listC

List configured Alcove mounts.

Inputs: home, status, workspace. Returns: object

alcove_mount_scanD

Scan mounted external sources.

Inputs: home, mount_id, workspace. Returns: object

alcove_note_sourceC

Record a source note in Alcove knowledge.

Inputs: title (required), topic (required), platform (required), tags, +5 more. Returns: object

alcove_pin_addC

Create a pinned personal note.

Inputs: title (required), home, kind, tags, +8 more. Returns: object

alcove_pin_archiveC

Archive or preview archiving a pin.

Inputs: pin_id (required), home, confirm, workspace. Returns: object

alcove_pin_getC

Get a pinned personal note.

Inputs: pin_id (required), home, workspace. Returns: object

alcove_pin_listC

List pinned personal notes.

Inputs: tag, home, status, workspace. Returns: object

alcove_pin_rebuild_indexD

Rebuild the pins index.

Inputs: home, workspace. Returns: object

alcove_pin_render_htmlC

Render the pins HTML board.

Inputs: home, workspace, output_path. Returns: object

alcove_pin_updateC

Update a pinned personal note.

Inputs: pin_id (required), home, kind, tags, +10 more. Returns: object

alcove_project_addC

Create or update a global project alias.

Inputs: path (required), alias (required), home, note, +1 more. Returns: object

alcove_project_findC

Find global project aliases or scanned root projects.

Inputs: keyword (required), home, workspace. Returns: object

alcove_project_getC

Get a global project alias.

Inputs: alias (required), home, workspace. Returns: object

alcove_project_listC

List global project aliases.

Inputs: home, workspace. Returns: object

alcove_project_removeC

Remove a global project alias.

Inputs: alias (required), home, workspace. Returns: object

alcove_project_roots_setC

Configure roots scanned by project find.

Inputs: roots (required), home, workspace. Returns: object

alcove_prompt_archiveC

Archive or preview archiving a reusable OKF prompt.

Inputs: prompt_id (required), home, confirm, workspace. Returns: object

alcove_prompt_getC

Get a reusable OKF prompt.

Inputs: prompt_id (required), home, workspace. Returns: object

alcove_prompt_rebuild_indexC

Rebuild the reusable OKF prompt index.

Inputs: home, workspace. Returns: object

alcove_prompt_saveC

Save or update a reusable OKF prompt.

Inputs: title (required), content (required), home, tags, +4 more. Returns: object

alcove_prompt_tagsC

List reusable OKF prompt tags.

Inputs: home, workspace. Returns: object

alcove_routine_addC

Create a recurring task template.

Inputs: title (required), home, tags, notes, +4 more. Returns: object

alcove_routine_listC

List recurring task templates.

Inputs: home, status, workspace. Returns: object

alcove_routine_materialize_dueC

Create tasks for due recurring templates.

Inputs: home, today, workspace. Returns: object

alcove_task_addC

Create a personal task.

Inputs: title (required), due, home, tags, +3 more. Returns: object

alcove_task_cancelC

Cancel a task.

Inputs: task_id (required), home, workspace. Returns: object

alcove_task_completeC

Complete a task.

Inputs: task_id (required), home, workspace. Returns: object

alcove_task_listD

List personal tasks.

Inputs: home, status, workspace. Returns: object

alcove_validateC

Validate a managed knowledge base.

Inputs: workspace, strict_quality. Returns: object

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    C2.4/5.0

    Scored across 63 tools

    Disambiguation4/5

    Tools are grouped by area (connector, inbox, knowledge, etc.) and within each group have distinct actions, but some overlap exists between knowledge add_note and note_source, or idea_add and inbox_manual_add, causing potential confusion.

    Naming Consistency4/5

    All tools start with 'alcove_' and use underscore-separated words, but the order of area and verb varies (e.g., 'alcove_get_topic' vs 'alcove_idea_add'), though overall it remains readable and systematic.

    Tool Count2/5

    With 63 tools, the set is extremely large for an MCP server. Even though the domain is broad, the number overwhelms and likely exceeds typical agent capacity to choose effectively.

    Completeness3/5

    Covers many operations across knowledge, tasks, pins, etc., but lacks update/delete for some entity types (e.g., knowledge notes, tasks) and missing remove for connectors or mounts, leaving notable gaps.

    Maintenance

    ActivityMaintained
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      Not graded
      quality
      D
      maintenance
      A database-first personal knowledge management system powered by a local MCP server, providing 29 tools to manage and search structured knowledge (meetings, emails, people, accounts, projects, todos, etc.) via a single SQLite file.
      -
    • A
      license
      Not graded
      quality
      D
      maintenance
      Local-first Knowledge Management System that exposes markdown-based durable memory as MCP tools for Codex and ChatGPT, enabling search, read, write, and promotion workflows with project and global scopes.
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Local-first memory server that stores notes, contacts, and future data as a unified entity graph, providing hybrid retrieval (vector + keyword) for AI assistants via MCP.
      4
      MIT