Tool · Python
contract-vault-cli
A git-backed register for your signed contracts — so a renewal, notice deadline,
or obligation never slips. contract-vault registers each executed deal in a
plain git repo, then surfaces what you'd otherwise miss: auto-renewal notice deadlines,
expirations, payment dates, and recurring obligations — as a queryable portfolio, an
.ics calendar, and a reminder digest for cron or an agent.
Every field keeps a confidence and a source, and a
human accept promotes a checked field to manual.
Local-first, single-file, stdlib-only.
It works standalone — and also composes with the contract-ops suite as the post-signature ("manage-out") end: it ingests extract-cli output and is the sibling of template-vault (template-vault stores the blank templates; contract-vault stores the signed instances).
pipx install contract-vault, then contract-vault demo
for a zero-config register-and-calendar tour on bundled fixtures. Register your own with
extract contract.pdf | contract-vault ingest -, then
contract-vault due --within 90d --format ics. Stdlib-only, git-backed, no
network on the default path.
Try it live
Explore a seeded demo register (read-only) — list deals, query the portfolio, and project the upcoming renewals/deadlines, in a sandbox.
Runs the real CLI on your input in a sandbox — no setup, nothing stored. Open in a new tab ↗
What it does
- Registers signed contracts from extract-cli output —
extract doc.pdf | contract-vault ingest -, oringestshells out toextractdirectly. Each deal is a committed record in a plain git repo (no DB, no daemon). - Surfaces deadlines as a calendar.
due/obligationsproject upcoming auto-renewal notices, expirations, and payment dates within a window (--within 90d) and emit a valid RFC 5545.icsfeed. They're status-aware — only open obligations by default, so completing one drops it from the calendar. - Obligation lifecycle.
obligation <deal> <id>marks an obligationdone/waived, assigns an--owner, or makes it recur (weekly/monthly/quarterly/semiannual). Lifecycle survives a re-ingest/recompute (carried forward by id). - Reminders for cron & agents.
remindis a digest of obligations whose reminder window is open right now;config reminderssets corpus-wide default lead-times once (e.g.30,7days). A bundled scheduling guide shows how to run it from cron. - Renewal-exposure gate.
risk/at-riskflags missed notice deadlines (CRITICAL when the contract auto-renews) and imminent ones;--strictexits non-zero for CI. - Portfolio queries.
findby counterparty, governing law, currency, value threshold, expiry, or auto-renew;statsfor a portfolio dashboard;exporttocsv/md/jsonfor finance and legal. - Human-in-the-loop review.
reviewlists unidentified / LLM-derived / low-confidence fields;acceptpromotes a checked field tosource: manual(single or bulk--from), andhistoryshows the git trail of every ingest + accept.
Quickstart
# Install (stdlib-only; the [docx] extra pulls in extract-cli for end-to-end ingest)
pipx install contract-vault
contract-vault --version
# Zero-config: register two sample contracts and project their renewals calendar
contract-vault demo
# Register your own signed contract, then export the next quarter's deadlines
mkdir my-vault && cd my-vault
contract-vault init
extract ~/contracts/acme-msa.pdf | contract-vault ingest -
contract-vault due --within 90d --format ics > deadlines.ics
# Assign an owner + reminder lead-times to an obligation, then run the reminder digest
contract-vault obligation acme-corporation/master-services-agreement 1 --owner "Finance" --reminders 30,7
contract-vault remind --json # what's due to nudge right now — wire into cron For agents and automation
contract-vault answers the suite's discovery contract: contract-vault --catalog json
returns {name, bin, version, description, commands[], exitCodes} so an
agent learns every command and flag at startup. Read commands take --json;
due/export take a richer --format.
Exit codes are CI-friendly: 0 ok, 1 failure or findings
(a verify mismatch, or a --strict review/risk gate),
2 bad usage. The full agent contract is in
AGENTS.md.
contract-vault --catalog json # discover commands/flags
contract-vault find --auto-renew --value-gt 50000 --json # portfolio query
contract-vault risk --within 30d --strict --json # CI renewal-exposure gate
contract-vault remind --json # reminder digest (run from cron)
Stored records conform to committed JSON Schemas under
docs/spec/
(contract-record.schema.json + the obligations projection), with the suite's
semver commitment. Extraction is delegated to
extract-cli (and its shared
~/.config/contract-ops/llm.json) — contract-vault never reimplements it and
never calls out on a default path. See
docs/INTEROP.md.
Where it fits in the workflow
The final stage of the nine-CLI workflow — the manage-out end. sign-cli produces the executed PDF; contract-vault registers it and keeps watch over its lifecycle. Feed it the same extract-cli output that drives intake, and the deal you signed becomes a tracked obligation with a calendar. It also stands alone as a git-backed contract register for any team that just needs to never miss a renewal. See the full workflow.
Repo
github.com/DrBaher/contract-vault-cli · MIT licensed · Stdlib-only Python (the [docx]/[pdf] extras pull in extract-cli) · PyPI contract-vault.