Browse / Support and bookkeeping
Docspell
Document organizer with OCR, NLP metadata suggestions, HOCON config, a full REST API, and the dsc CLI.
Docspell ingests scans, email attachments, and uploads, runs OCR, suggests correspondents, tags, and dates with Stanford CoreNLP, and stores everything with custom fields and full-text search. It targets households and smaller companies. Two Scala services (restserver and joex) are configured with HOCON files or env vars; every feature is reachable over the REST API, which the dsc CLI and Android app use.
- we scan supplier invoices and receipts and want them OCR'd, dated, and matched to the right vendor automatically before the bookkeeper sees them
- we want our agent to push documents in through the integration endpoint and search them by vendor and date range
- AGPL-3.0 or later
- JVM plus tesseract, ocrmypdf, unoconv; the joex worker is memory-hungry with NLP enabled
- Session tokens default to 5 minutes; long agent sessions must renew through /sec/auth/session
- Positioned for home and small groups; multi-tenant is by collective, not by organization hierarchy
Last activity Sep 2, 2026. Fit: adaptable 2, operable 3.
Adaptable: what is yours to change
Make it yours
Config only9 things to edit
Two HOCON files (docspell.server.* and docspell.joex.*) or env vars in the DOCSPELL_SERVER_APP__NAME pattern. An SMB sets docspell.server.base-url, backend.signup.mode (closed after the first collective), backend.jdbc, full-text-search backend, joex OCR languages and ocrmypdf options, the integration-endpoint secret for scanner uploads, and SMTP for outgoing mail. Correspondents, tags, custom fields, and scan-mailbox jobs are created in the app.
- Env vars
DOCSPELL_SERVER_APP__NAMEDOCSPELL_SERVER_BASE__URLDOCSPELL_SERVER_BACKEND_SIGNUP_MODEDOCSPELL_SERVER_BACKEND_JDBC_URLDOCSPELL_JOEX_BASE__URL- Config files
docspell-server.confdocspell-joex.confmodules/restserver/src/main/resources/reference.confmodules/joex/src/main/resources/reference.conf- Prompt files
- none
- Accounts you need
- none; optional SMTP and IMAP mailboxes
Source
- github.com/eikek/docspell
- AGPL-3.0 license
- Last commit Sep 2, 2026
- 2,317 stars
Operable: what an agent can drive
Interface
OfficialAPIpublished by the builderlocal
How an agent can drive an Operable Listing, in five levels: native (built for the agent as the primary interface), official (the Builder ships an agent interface), wrapped (a third party wraps the software's API), config (an agent can only drive it by editing files), gui (screen control only). An interface is official only when it is published by the same organization that ships the software. GUI-level Listings are allowed and sorted last.
Reach
Partial coverage. 9 of 10 jobs reachable through the stated interface.
| Job | Through the interface | Evidence |
|---|---|---|
| Upload documents | Reachable | docs/api: upload request; integration endpoint and source URLs for unauthenticated uploads; dsc CLI watch and upload |
| Search with the query language | Reachable | docs/api/intro: protected route /sec/item/search |
| Edit tags, correspondents, custom fields, dates | Reachable | README: everything is accessible through a REST/HTTP api; web app is a client of it |
| OCR and text extraction | Reachable | joex processes every upload; no action needed beyond config |
| Metadata suggestions from NLP and learned classifiers | Reachable | README: suggests correspondents, guesses tags, finds dates using machine learning; runs automatically |
| Import from mailboxes | Reachable | README: great e-mail integration; scan-mailbox tasks configured through the API-backed settings |
| Full-text search across content | Reachable | README: fulltext search; admin route to rebuild the index |
| Collective insights and statistics | Reachable | docs/api/intro: /sec/collective/insights |
| Send items by mail or share them | Reachable | README screenshot mail-item; share feature documented on docspell.org |
| Book-keep amounts or reconcile | Not reachable | archive only; custom fields can hold amounts but there is no ledger |
Code stack
- Languages
- ScalaElm
- Frameworks
- http4sdoobiefs2Stanford CoreNLPTailwind
- Package manager
- sbt
- Database
- PostgreSQLMariaDBH2
- Hosting target
- Docker Compose (docspell/docker)deb packagezipNix / NixOS moduleHelm chart
- Built
- Human-written (recorded, never ranked)
Evidence and confidence
| Field | Where it was seen | Confidence |
|---|---|---|
| formFactor | README: SPA web app over a REST server; docker-compose quick start on port 7880 | 95% |
| executionModel | Stanford CoreNLP classical NLP, no LLM calls | 90% |
| operability | README: everything is accessible through a REST/HTTP api; docs/api/intro documents auth, search, admin routes; dsc CLI and Android app are clients | 90% |
| effort | docspell.org/docs/configure/main: HOCON config, env var mapping, docspell.server and docspell.joex sections; reference.conf in repo | 85% |
| editions | README: free software under AGPLv3; no paid edition | 95% |
| active | gh api: pushed 2026-09-02, 2317 stars | – |
| reach | 85% |
Open questions
- Whether any MCP wrapper exists for Docspell (none surfaced in sourcing)
Sources
- github.com/eikek/docspell sourcing:support-bookkeeping:curated
- docspell.org/docs/api/ sourcing:support-bookkeeping:curated
- docspell.org/docs/configure/main/ analysis