# Repo layout

Where the pieces live.

```
bookmark_context/          Python package
  cli.py                   `serve` | `mcp` | `vacuum` entry point
  config.py                config.toml loading, defaults
  auth.py                  API token create/load
  api/                     FastAPI daemon
    app.py                 app factory, middleware (auth, body limit), /status, /stats
    collections.py         /collections routes
    bookmarks.py           /bookmarks routes, the save + scan gate
    schemas.py             pydantic models, URL/SSRF validation
  indexer/
    scraper.py             fetch + trafilatura extraction + favicon
    chunker.py             text -> chunks
    scanner.py             prompt-injection regex categories + scoring
    embedder.py            fastembed wrapper
    pipeline.py            the background index job
  storage/
    database.py            SQLite
    vector_store.py        Chroma
  mcp/server.py            FastMCP server, the three tools
  tracing.py               opt-in JSONL traces
  maintenance.py           vacuum

extension/                 Chrome MV3 extension (React + Vite + Tailwind)
  manifest.json
  src/sidepanel/           the side panel app
  src/components/          collections, bookmarks, dialogs, layout, settings, ui
  src/api.ts               daemon client
  background/, content/    service worker, content script

tests/                     pytest suite, mirrors bookmark_context/
website/                   this documentation site
docs/superpowers/          specs and plans
mcp_debug.py               stdio proxy for raw JSON-RPC logging
```

## Next

- [Building & testing](/docs/development/building/) — run the suites, build the extension
- [Versioning](/docs/development/versioning/) — one source of truth for the version string
