Skip to main content

scribe

A conversational AI agent for your notes. Ask it to find things, summarize what you wrote, restructure a mess of files, fix broken links, tag things, or edit content directly — it figures out which operations to run and does it, chaining multiple steps together when the task needs it.

Built on MCP for tool access and OpenRouter for the LLM, so you can point it at whichever model you like. Currently supports Obsidian, with more backends (Notion and others) planned — see Roadmap.

Requirements

  • Python 3.11+
  • An OpenRouter API key (free tier available)
  • For Obsidian: a vault on your local filesystem

Install

pip install git+https://github.com/ZedoMak/scribe.git

This pulls in everything needed for the Obsidian backend automatically — no separate install step.

First run

scribe obsidian chat

You'll be asked for your OpenRouter API key and the absolute path to your vault, once. This is saved to ~/.config/scribe/config.toml. Redo setup any time with scribe obsidian config --reset, or override a single value with an environment variable: OPENROUTER_API_KEY, OBSIDIAN_VAULT_PATH, AGENT_MODEL.

Usage

Every backend follows the same command shape: scribe <backend> <command>.

scribe obsidian chat                                  # interactive session
scribe obsidian task "reorganize my Projects folder"   # one-off task, then exit
scribe obsidian search --query "authentication roadmap"
scribe obsidian summarize --file "Weekly Notes"
scribe obsidian tags --min-usage 5
scribe obsidian doctor                                 # troubleshooting
scribe obsidian config                                 # view current config

Interactive chat

scribe obsidian chat

Talk to your vault like you would to a person. Inside a session:

Command Does
/help list commands
/tools list every operation the agent can call
/clear wipe conversation history, start fresh
/exit quit (also: exit, quit, Ctrl+D)

One-off tasks

scribe obsidian task "merge my two Machine Learning folders and tag everything by topic"

Runs a single instruction to completion, then exits — useful for scripting or quick jobs where you don't want a full chat session.

For anything that changes files, task shows you a plan before doing anything:

╭─ proposed plan ──────────────────────────────────╮ │ 1. Move Model.md and DataSets.md into │ │ Machine Learning/Fundamentals/ │ │ 2. Create Machine Learning/Linear Regression/ │ │ and move the 3 related notes there │ │ 3. Tag all moved notes with #ml │ ╰────────────────────────────────────────────────────╯ Proceed with this plan? [y/N]

Nothing is touched until you approve. Skip the prompt with --yes/-y if you trust it and want it to just run (careful with this on anything destructive).

summarize, search, and tags are read-only shortcuts for common lookups — they skip the plan step since there's nothing to confirm.

What it can actually do

Anything the underlying Obsidian MCP server exposes: reading, creating, editing, and deleting notes; searching by text, tag, date, or regex; managing tags; finding backlinks and broken links; listing orphaned notes; moving and renaming notes and folders. Run /tools inside a chat session to see the live list.

The agent is instructed to survey your vault before restructuring it, trust successful operations instead of re-verifying obsessively, and skip (rather than force) anything that doesn't go as expected — these are lessons from real failures during development, not defaults you need to configure.

Troubleshooting

obsidian-mcp was not found on your PATH Run scribe obsidian doctor — it checks what's missing and how to fix it.

A task times out or seems stuck Individual tool calls are capped at 30 seconds; a stuck call will report a timeout instead of hanging forever. If a task genuinely needs to touch a lot of notes, it's normal for it to take a while — you'll see each tool call as it happens.

Something else broke This project pins a few dependency versions deliberately (fastmcp==2.8.1, pydantic<2.12) because of real breaking changes upstream in those libraries. If you're hacking on the source directly, don't loosen those pins without confirming scribe obsidian doctor still passes afterward.

Roadmap

  • Notion backend
  • Conversation history persistence across sessions
  • More granular per-backend safety controls

Contributing

Issues and PRs welcome. This is a young project — expect rough edges.

License

MIT — see LICENSE.

Metadata

Release files for scribe-agent 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for scribe-agent 0.3.0
File Size Uploaded Provenance Actions
scribe_agent-0.3.0.tar.gz 12.2 kB Without provenance Details for scribe_agent-0.3.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for scribe-agent 0.3.0
File Interpreter ABI Platform Actions
scribe_agent-0.3.0-py3-none-any.whl Python 3 none any Details for scribe_agent-0.3.0-py3-none-any.whl

Total release size: 27.7 kB

Release files / scribe_agent-0.3.0.tar.gz

Download URL scribe_agent-0.3.0.tar.gz
Size 12.2 kB
Tags Source
SHA-256 checksum
How to use checksums
e6b6cd541e83a4398626f7b9136a8bfa03b6cb656f728a7f1a58bc22fb8d3e00
BLAKE2b-256 checksum
How to use checksums
f95a9cf37aac1520a1efebf552ce8d61fee45b8708fcf6dd76d60a1ea0459e08
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release files / scribe_agent-0.3.0-py3-none-any.whl

Download URL scribe_agent-0.3.0-py3-none-any.whl
Size 15.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9e432a69db45c9371e25d975d93a9aaaecc6035bbeb71fe1c3026e0d897a72f8
BLAKE2b-256 checksum
How to use checksums
5c57a1be78e7a322532d4c1bab6762bd10dfcfb6653b6a929093a2fdb8936e42
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Security for scribe-agent 0.3.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page