Skip to main content

Docketry

Working name — a local, gate-enforced port that a law firm's email flows into.

Most firms work out of their email. Docketry meets them there — without going into their email. The firm creates a dedicated intake mailbox (for example intake@yourfirm.com), points forwarding rules at it, and Docketry drains that one mailbox with credentials the firm holds. Nothing enters the pipeline that the firm didn't send across the boundary.

Docketry is the base layer of a family of small, composable open-source legal workflow tools (document classification, e-service notice parsing, citation verification, draft linting). Each plugs into the port as a gate in a declared pipeline.

What makes it different

Best practices here are code, not suggestions:

  • A message cannot cross a stage boundary without passing its gates or carrying a recorded approval from the role the manifest names. advance() is the only forward path and it re-checks every time. There is no advisory mode and no bypass flag.
  • Gates declare which pipeline stages they are meant for; binding one elsewhere is a load-time error, not a footnote in documentation.
  • Every finding and every human approval lands in an audit table on the firm's own disk.

What it is not

  • Not hosted. Docketry runs on the firm's machine. We never hold, transit, or store anyone's email.
  • Not case management. Docketry tracks a matter through the stages your firm defines and gates the moves between them. It does no billing, no trust accounting, no client portal and no calendar sync — that is your practice management system's job and it is better at it.
  • Not an access control system. Roles decide what a hold is waiting for and are recorded against the name of whoever released it. There is no login: a role is an attestation, so the registry catches mistakes, not lies.
  • Not a security product. Docketry makes no malware, phishing, or other cybersecurity claims. Its attachment and sender gates are pipeline-hygiene policy — what the pipeline accepts — nothing more. Get real security from your mail provider and endpoint tooling.
  • Not legal advice, and not a currency service. Docketry never claims any rule, deadline, or authority is up to date. It checks the inputs you give it against the sources you point it at, and it fails loudly.

Data at rest

Docketry stores messages and attachments in plaintext SQLite and files in its home directory, protected by file permissions (config is written 0600). It does NOT do application-level encryption, deliberately: an encrypted database whose key sits on the same disk is comfort, not protection. Protect a Docketry home the way you protect the rest of the client file system — OS full-disk encryption (BitLocker / FileVault / LUKS) and OS accounts. Nothing is ever copied off the machine.

Bring your own model (optional, local only)

Docketry works fully without a model, and calls one only if you configure it:

[llm]
base_url = "http://127.0.0.1:11434"   # Ollama, llama.cpp, vLLM, LM Studio
model = "qwen2.5"                     # or deepseek-r1, gemma2, llama3.1 ...

The endpoint is checked before any request is built and refused unless it resolves entirely to your own network — loopback or private range. Point it at a hosted API and Docketry stops rather than sending your documents to a vendor. docketry llm-check and docketry doctor both say plainly whether anything can reach off-network; with no model configured they say so too.

Any model your server can load works — the model name is a config string, not an adapter. Reasoning models are handled: their narration is kept separate from the answer, never presented as the conclusion.

A model here proposes. It never releases a hold, approves anything, classifies, or decides what to redact. Those stay deterministic and human-gated, and a test enforces that no gate, the pipeline runner, or the redaction path can consult one.

We ship no weights and endorse no model; licences differ per release and are yours to check.

Try it in sixty seconds

$ pip install docketry   # or grab a one-file executable from Releases
$ docketry demo

demo seeds a disposable home with sample traffic — a clean service notice, a federal NEF, a hearing notice, a drifted portal template, and an unknown sender — and opens the local dashboard so you can watch the gates hold the right three and release them yourself. No mailbox, no configuration, nothing saved. (Downloadable one-file executables for Windows/macOS/Linux attach to tagged releases — double-clicking one opens this same demo.)

Quickstart

$ pip install docketry
$ docketry init --host imap.gmail.com --user intake@yourfirm.com
$ export DOCKETRY_IMAP_PASSWORD='app-password-here'
$ docketry poll        # sweep the intake mailbox once
$ docketry queue       # see anything a gate held for review
$ docketry approve 3 --gate sender-scope --by "Dana" --role paralegal
$ docketry status

The pipeline is declared in guardrails.toml in your Docketry home directory (see examples/guardrails.toml). Reading the intake mailbox is strictly read-only: messages are never marked, moved, or deleted.

Skills starter pack

skills/ ships nine agent skills for Claude Code (or any Agent Skills-compatible harness):

Skill What it drives
review-draft verify-draft + lint on a draft
classify-document the deterministic classifier and its staged queue
intake-triage the review queue and approvals
redact-document redaction, its preview, and its verification
build-timeline the case timeline and its exports
reconcile-docket diffing the reconstruction against a pulled docket
manage-matter matters moving through the firm's workflow stages
pipeline-health the report on volume, bottlenecks and dead config
assign-contacts who an address belongs to, and what that makes privileged

Install by copying into your project:

$ cp -r skills/* .claude/skills/

The skills are a front door, not a bypass: each one drives the same CLI commands and gates the pipeline uses, and each carries hard rules — a skill never verifies a citation from model knowledge, never applies a classification without a named human approver, never releases a hold itself, never edits a workflow to get a blocked matter through, never turns queue figures into a statement about a named person, and never decides for itself who the client is.

Every skill ships with an eval suite, and a test fails the build if one does not: a tool an agent can drive without evals is an untested tool with a good description. examples/ includes three guardrail manifests to start from (default, solo-strict, litigation-team), plus a bare workflow and roles file.

Evals

Each skill ships an eval suite (skills/<name>/evals/) in the claude plugin eval format. The graders encode the hard rules as tests: tool_used asserts the agent actually RAN docketry verify-draft (answering from model knowledge fails the eval even when the answer is right), min: 0, max: 0 graders assert approvals were never executed by the agent, and judge graders check the honesty of degraded-mode reporting. The eval runner is currently in early access; the suites are validated for shape in CI and runnable wherever claude plugin eval is enabled.

Requirements

Python 3.11+. The core is stdlib-only. Feature plugins declare extras (pip install "docketry[pdf,ocr]" etc.) — see FEATURES.md for the feature manifest and its dependency graph.

License

Apache-2.0.

Metadata

Release files for docketry 0.15.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for docketry 0.15.0
File Size Uploaded Provenance
docketry-0.15.0.tar.gz 160.3 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for docketry 0.15.0
File Interpreter ABI Platform
docketry-0.15.0-py3-none-any.whl Python 3 none any Details

Total release size: 267.5 kB

Release files / docketry-0.15.0.tar.gz

Download URL docketry-0.15.0.tar.gz
Size 160.3 kB
Tags Source
SHA-256 checksum
How to use checksums
305ffe781400b8a0ba8a4068e4b980f265de97ca390b645f4ca0281513127c0d
BLAKE2b-256 checksum
How to use checksums
1353aaf8f0f7491fc5ff0ec146856b8c97675639448208500a97727d7aaa8970
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

Release files / docketry-0.15.0-py3-none-any.whl

Download URL docketry-0.15.0-py3-none-any.whl
Size 107.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
55c491a3f1ee00744efe47d0298c418243d6f41eb2f3696141acd4a125558600
BLAKE2b-256 checksum
How to use checksums
70fac665c4c480483cb1363d7125f8909c937b79917e2a6bac02a8e56c468dd3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

Security for docketry 0.15.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page