obsidian-ai-agent processes Obsidian-style vaults (.zip of markdown files), rewrites notes with LLM guardrails, and provides a review-first Studio workflow before export.
- Upload and process a vault from the Studio interface.
- Inspect per-note actions, reasons, and diffs before downloading output.
- Export
index.md,entities.md,preview.md, andreport.json. - Preserve critical markdown structure with rewrite guardrails.
- Use resilient job tracking (SQLite with in-memory fallback).
frontend/: Next.js 16 + React 19 Studio and feedback UI.backend/: FastAPI API, job lifecycle, vault processing pipeline.docs/: product assumptions, deployment, and technical decisions.scripts/: evaluation and local test helpers.
cd backend
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
uvicorn app.main:app --reloadcd frontend
npm install
cp .env.example .env.local
npm run devOpen http://localhost:3000/studio.
NEXT_PUBLIC_API_URL: backend base URL (default local:http://localhost:8000)NEXTAUTH_URLNEXTAUTH_SECRETGITHUB_ID,GITHUB_SECRET(optional)GOOGLE_ID,GOOGLE_SECRET(optional)
CORS_ALLOW_ORIGINSOPENROUTER_API_KEYandOPENROUTER_MODEL(orOPENAI_API_KEY/OpenAI_API_KEY, optionalOPENAI_MODEL/OpenAI_MODEL)MAX_UPLOAD_MBMAX_FILESDAILY_JOB_LIMITRATE_LIMIT_PER_MINUTELLM_MAX_WORKERSLLM_REQUESTS_PER_MINUTEJOB_TTL_MINUTES
GET /health: service health.POST /upload-vault: upload and start async processing.GET /status/{vault_id}: processing progress and status.GET /download/{vault_id}: processed vault zip.GET /preview/{vault_id}: compiled markdown preview.GET /report/{vault_id}: structured processing report.GET /diff/{vault_id}?path=...: original vs processed note diff data.POST /feedback: feedback ingestion endpoint.GET /metrics: lightweight usage counters.
cd backend
.venv/bin/python -m unittest discover -s tests -qcd frontend
npm run lint
npm run build