mothermachine

Browse / Support and bookkeeping

Docspell

Document organizer with OCR, NLP metadata suggestions, HOCON config, a full REST API, and the dsc CLI.

AdaptableOperable Business appWeb app Deterministic ScalaElm API License: AGPL-3.0

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.

Use it when
  • 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
Gotchas
  • 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.

Editions

Free (self-hosted) · Free open source

For agents: JSON · Markdown

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__NAME DOCSPELL_SERVER_BASE__URL DOCSPELL_SERVER_BACKEND_SIGNUP_MODE DOCSPELL_SERVER_BACKEND_JDBC_URL DOCSPELL_JOEX_BASE__URL
Config files
docspell-server.conf docspell-joex.conf modules/restserver/src/main/resources/reference.conf modules/joex/src/main/resources/reference.conf
Prompt files
none
Accounts you need
none; optional SMTP and IMAP mailboxes

Source

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.

Docs
docspell.org/docs/api/

Reach

Partial coverage. 9 of 10 jobs reachable through the stated interface.

JobThrough the interfaceEvidence
Upload documentsReachabledocs/api: upload request; integration endpoint and source URLs for unauthenticated uploads; dsc CLI watch and upload
Search with the query languageReachabledocs/api/intro: protected route /sec/item/search
Edit tags, correspondents, custom fields, datesReachableREADME: everything is accessible through a REST/HTTP api; web app is a client of it
OCR and text extractionReachablejoex processes every upload; no action needed beyond config
Metadata suggestions from NLP and learned classifiersReachableREADME: suggests correspondents, guesses tags, finds dates using machine learning; runs automatically
Import from mailboxesReachableREADME: great e-mail integration; scan-mailbox tasks configured through the API-backed settings
Full-text search across contentReachableREADME: fulltext search; admin route to rebuild the index
Collective insights and statisticsReachabledocs/api/intro: /sec/collective/insights
Send items by mail or share themReachableREADME screenshot mail-item; share feature documented on docspell.org
Book-keep amounts or reconcileNot reachablearchive 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

FieldWhere it was seenConfidence
formFactorREADME: SPA web app over a REST server; docker-compose quick start on port 788095%
executionModelStanford CoreNLP classical NLP, no LLM calls90%
operabilityREADME: everything is accessible through a REST/HTTP api; docs/api/intro documents auth, search, admin routes; dsc CLI and Android app are clients90%
effortdocspell.org/docs/configure/main: HOCON config, env var mapping, docspell.server and docspell.joex sections; reference.conf in repo85%
editionsREADME: free software under AGPLv3; no paid edition95%
activegh api: pushed 2026-09-02, 2317 stars–
reach85%

Open questions

  • Whether any MCP wrapper exists for Docspell (none surfaced in sourcing)

Sources