carrel
Provides audio/video processing capabilities via FFmpeg, including generating audiobooks (mp3/ogg) from text and PDF files.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@carrelsearch my documents for 'invoice'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Read, index, pack and file your documents — from the terminal, for you and your agents.
carrel pack src --stats — the token table, before you spend a context window on it.
carrel redact — true raster redaction of a PDF, and the proof: grep exits 1.
carrel turns the documents on your disk — PDFs, Word and OpenDocument files, ebooks, spreadsheets, email, scans — into text you can search, fields you can query, and context you can hand to an LLM. One CLI; every data command speaks --json with stable exit codes; the commands that move your files (organize, rename, intake, dedupe) dry-run by default; a conversion refuses to overwrite its output without --force. It ships an MCP server and a Claude Code plugin marketplace that drive the same commands, so Claude can read your .docx, pack the five relevant files out of five hundred, and file an invoice inbox by what the invoices say. Missing pandoc or tesseract? carrel doctor tells you what works today and how to unlock the rest.
A carrel is a private study desk in a library: your materials close at hand, organized your way.
Install
Requires Python ≥ 3.12 and uv. No checkout needed:
uv tool install 'carrel[all]' # or: pipx install 'carrel[all]' — puts `carrel` on your PATH
# plain `carrel` skips the TUI and office/token extras (see INSTALL)
carrel doctor # what can your desk do today? (+ install hints for the rest)(Contributing or hacking on it? uv tool install . from a checkout does the same thing.)
Related MCP server: MCP Codebase RAG Server
Three things to try
Give Claude the right context
Index a folder once, then let the desk's own ranking choose what to send. --since does the
same job from git history instead of a query.
carrel --root ~/papers index # the desk lives in ~/papers/.carrel
carrel --root ~/papers pack ~/papers --query "attention" --stats
carrel pack . --since HEAD~5 --stats # or: what git touched--root names the desk. Without it the index lands in the directory you happened to run from,
and the next --query cannot find it.
The MCP server (carrel mcp, shipped by the carrel-agent plugin) exposes the same thing as a
tool, confined to the directory it starts in.
Limitation: query terms must appear in the text — FTS5 AND-s them, so a natural-language
question often matches nothing. Under --json an empty pack exits non-zero rather than handing
you a valid, empty document.
Read what the agent can't
Claude's Read cannot open a .docx, an .xlsx or an .eml at all. Install the guard plugin
once and those files arrive as text, without you converting anything by hand.
claude plugin marketplace add coltonbearden/carrel # the plugin marketplace, not the CLI
claude plugin install carrel-guard@carrelOffice, ebook, email and spreadsheet files become text automatically before Claude's Read
sees them; PDFs become cheap text; images stay pictures for Claude's own vision.
Limitation: layout-heavy PDFs and diagrams still want the visual Read — the guard's note
tells Claude where the original is and when to prefer it (CARREL_GUARD_PDF_TEXT=0).
Turn an inbox into an archive
Read what each document says, then file it by that. The dry run is the default; nothing moves
until --apply.
carrel fields ~/inbox/invoice.pdf # vendor, dates, totals, with confidence
carrel intake ~/inbox --to ~/archive # dry run: shows every planned move
carrel intake ~/inbox --to ~/archive --apply # files into YYYY/MM, indexes, records fields
carrel --root ~/archive meta find 'total>1000' 'due<2026-11'Limitation: field extraction is English-label heuristics with a confidence column — read it
before --apply. Originals are always kept.
Status and support
A solo-maintainer project, used daily by its author.
Settled interfaces — convert, inspect, index/search, pack: the flags and the
--json shapes are what they will stay. Still moving — carrel mcp and the carrel-guard
hook do useful work today, but v0.5.0 changes the behaviour of both (the server is now confined
to its root; image Reads pass through), so pin an exact version if you script against them.
Heuristic, and says so — the accuracy of fields, refs and intake: English-label
matching with a confidence column, not a model. The desk TUI is a companion, not a product.
CI: Linux runs the full suite on Python 3.12–3.14 with every optional binary. The required macOS check is the degradation job — no extras, no binaries — so it proves carrel fails cleanly there, not that pandoc or tesseract paths work. Windows is advisory.
Security reports: see SECURITY.md — acknowledged within 7 days, fixed or explicitly declined within 30.
Two things carrel is not: a cloud document system (nothing leaves your disk, and there is no account), and a substitute for reading redaction or financial output before you rely on it.
Everything on the desk
Domain | Command | What it does |
Convert & transform |
| Conversion across pdf, md, html, txt, docx, odt, epub, rtf, png/jpg/ico, json, xml, csv, plus xlsx → csv/json; the full SRC → target matrix is in |
| Images and scanned PDFs → text, markdown, or a searchable PDF | |
| PDF merge/split/rotate/extract-pages, image resize/rotate/crop, text find-replace, json set/del | |
| Pull embedded images out of pdf, ico, and html | |
| Narrate txt/md/pdf and docx/odt/epub/rtf into mp3/ogg, chapters from markdown headings | |
Inspect & prove |
| Metadata + per-type structure summary: sha256, pages, EXIF, json shape, csv dialect, docx paragraphs, xlsx sheets… |
| Unified text diffs, structural json/csv diffs, pdf text diffs, image pixel diffs | |
| Thumbnails for pdfs, images, and html | |
| Soft-proof against an ICC profile, with a ΔE summary | |
| Dominant palette extraction, ICC conversion, contrast checks | |
The desk index |
| SQLite FTS5 index of everything under a root ( |
| bm25-ranked full-text search with type and tag filters | |
| Tag files; find by tag | |
| Sidecar notes on any file; real text annotations on PDFs | |
| Typed fields on files — | |
| Export/import tags + notes + fields as JSON (move a desk, commit it next to a repo); | |
Read the documents |
| Vendor, invoice number, PO, dates, subtotal/tax/total, currency and IBAN out of invoices, receipts and statements — each with a confidence and the line it came from; |
| Reference numbers anywhere in a folder: invoice, PO, order, check, account, tracking, ticket, plus check-digit-verified IBAN, ABA routing, EIN, VAT, ISBN, GTIN, DOI, UPS, USPS. | |
|
| |
Agents & context |
| Bundle files/trees into one LLM-ready document — md/xml/json; |
| Serve the whole desk over MCP on stdio: 14 tools (search, pack, inspect, tag, note, index, convert, diff, redact, doctor, meta, fields, mail, refs) plus | |
Housekeeping |
| Sort a folder by type/date/EXIF date — dry-run by default |
| Exact (BLAKE2) and near (perceptual hash) duplicate detection | |
| Rename files from what they say — | |
| Run any command over many files: parallel jobs, a resumable manifest, dry-run, per-file JSON records | |
| Watch a folder and run shell actions on file events — recursive, settle-wait for slow writers, polling for | |
| The inbox in one command: read each document, name it, file it into | |
| Pattern/PII redaction for text formats; true raster redaction for PDFs | |
| Visible PDF stamps, sha256 manifests, gpg-backed verify | |
| Build html/pdf forms from JSON specs; list and fill AcroForm PDFs | |
The desk itself |
| A companion TUI — see below; needs the |
| What your environment enables today, with install hints for the rest | |
| Tab-completion scripts for bash, zsh, and fish |
carrel wraps the masters — pandoc, poppler, qpdf, tesseract/ocrmypdf, ImageMagick, exiftool, ffmpeg… — behind one adapter layer with capability detection. Missing binary? Commands degrade with an install hint (exit 3), never a crash. Several copies of a tool on PATH? Pin one with CARREL_BIN_<NAME> (docs/CONFIGURATION.md).
A first taste
carrel inspect paper.pdf # pages, sha256, producer, form fields…
carrel convert minutes.docx --to md # office/ebook formats read and write via pandoc
carrel index . && carrel search "marginal notes" # FTS5 over your whole desk
carrel pack src/ --format xml -o context.xml --stats # LLM-ready context + token table
carrel pack docs/ --query "release checklist" --stats # only the files the index ranks relevant
carrel catalog export -o desk.json # tags + notes, portable and diff-ableAdd --json to any of these and you get machine-readable output on stable exit codes — that's the whole agent contract. Tab completion: eval "$(carrel completion bash)" (zsh and fish too).
The marketplace
This repo is also a Claude Code plugin marketplace: plugins whose slash commands, agents, skills, and hooks all delegate to the CLI above. The table below is a snapshot — docs/MARKETPLACE.md is authoritative for the current plugin list.
claude plugin marketplace add coltonbearden/carrel
claude plugin install carrel-inspect@carrelPlugin | Gives Claude |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| A |
Install the CLI first (see Install) so the plugins can call it. Works headless too:
claude -p "/carrel-inspect:inspect text+image.pdf" --allowedTools "Bash(carrel:*)"The full validated flow (with real output) is in docs/TEST_REPORT.md.
The desk TUI
carrel deskcarrel desk — browse the tree, inspect a file, run an action, search the index.
A companion to the CLI: a three-pane Textual desk. A file tree on the left, an inspector in the middle (metadata, preview, tags, notes), an action palette on the right (convert, ocr, pack, thumbnail…) — all driving the same core library as the CLI, with full-text search along the bottom. Theme: warm lamplight on dark wood, per docs/BRAND.md.
Learn more
The docs site — everything below, browsable
docs/VISION.md — why a library desk, and the product principles
docs/ARCHITECTURE.md — the adapter layer, the index, the plugin design
docs/FEATURES.md — the capability × strategy matrix
docs/TEST_REPORT.md — everything above, executed for real (the v0.1.0 record: cookbook runs, office and
pack --queryproofs)examples/cookbook/ — end-to-end recipes, from scan→searchable-notes to pack-what-matters
docs/BRAND.md — palette, typography, logo usage, voice
docs/HOW_THIS_WAS_BUILT.md — how this was built: the autonomous single-day build, from the primary sources
License
MIT © Colton Bearden
Related projects
brainrot — Self-audit toolkit for Claude: mine your own chat history for corrections and wins, arbitrate findings into a lean rule set, keep memory tidy
This server cannot be deployed
Maintenance
Related MCP Connectors
Turn a GitHub repo or docs site into agent-ready context: pack it or search it, over MCP.
Personal assistant MCP server with search, execute, packages, jobs, secrets, and integrations.
Agent-native MCP server over the public saagarpatel.dev corpus. Read-only, stateless.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceLocal-first MCP server for safely searching, reading, summarizing, tagging, deduplicating, and organizing local files with scoped access, read-only defaults, and dry-run plans.17MIT
- FlicenseAqualityDmaintenanceProvides semantic vector search over local codebases via MCP, enabling hybrid search (dense + sparse + RRF) for any MCP client like GitHub Copilot or Claude Desktop.58-
- FlicenseNot gradedqualityCmaintenanceExposes code search and file reading tools over the Model Context Protocol, enabling any MCP-compatible client to query a codebase with natural language.-
- AlicenseAqualityBmaintenanceEnables natural-language semantic search over your own local files through an MCP server, fully offline without API keys or a server daemon, with optional LLM-grounded answers and exact file:line sources.5MIT