Cogeto turns your documents into verified, provable institutional memory: it reads document sets including scans, verifies every fact against its own source sentence before storing it, reports where your documents contradict each other, and produces a signed findings report a third party can verify. Runs EU hosted, self hosted, or fully offline. Open source under AGPLv3.
Every trust claim is backed by an inspectable artifact: a signed receipt, a verification verdict, a validity interval, a source link. Never just a promise. It is single-tenant by design and model-sovereign, with an optional local redaction tier so PII never leaves your machine.
Models are rented. Knowledge is owned.
- Contradiction findings. Every new fact is reconciled against everything already known, across the whole corpus: the specification against the mail against the minutes against the scan. Where documents disagree, Cogeto reports the conflict with both claims and their sources. Contradictions are surfaced, never queued.
- Verification before storage. Every extracted fact passes an independent verification pass against its own source span before it counts, and carries a lifecycle status. What fails is handled automatically and logged, never silently dropped. Nothing is silently believed.
- The signed findings report. A forwardable artifact an auditor or quality lead can hand on: every contradiction with both verbatim source spans, superseded facts with their chains, and a summary of what verification rejected. Signed, so a third party can check it.
- Per-claim provenance. Answers cite their sources sentence by sentence. Memory claims carry inspectable chips, web claims carry URL and fetch time, and anything from the model's own knowledge is plainly marked unsourced. That marking is the feature: chat is how the corpus is used, and every answer says exactly what it can back up.
- Time-travel memory. Facts carry validity intervals, supersession never destroys history, and the timeline shows what you believed at any point and what changed it. "Which CRM were we using in March?" is answered as the past, never as the present.
- Deletion receipts. Deleting a source runs a saga across Postgres, Qdrant, and MinIO, then issues a hash-chained, ed25519-signed receipt. A nightly sweep re-verifies that what a receipt promised gone stays gone. Forgetting is provable.
- The Memory Passport. One click exports everything, with full history, statuses, provenance, and your receipts, as a signed archive in a published open format that verifies outside Cogeto.
One command on a fresh clone is the contract:
git clone https://github.com/Cogeto/cogeto.git
cd cogeto
docker compose upWait for the stack to become healthy, then open https://localhost (the dev edge
uses a self-signed certificate, so accept the warning) and sign in with the dev
bootstrap admin, admin@cogeto.localhost / DevPassword1!. Zero configuration
required; every default can be overridden via .env (see
.env.example). Model features need an API key in the environment.
Without one the stack still runs, and model calls fail with a typed error instead of
pretending.
Details, layout, and common issues: docs/running-locally.md.
COGETO_DEMO_MODE=1 docker compose --profile demo up --buildA fictional consultant with weeks of accrued memory, seeded through the real public
API: contradictions to resolve, lapsed facts, standing commitments, a signed deletion
receipt. Gated behind a generated password printed by the seed job
(docker compose logs demo-seed). Never run the demo profile on an instance holding
real data.
Two processes from one codebase: an app (API and SPA, the fast path of retrieval and answering) and a worker (every slow job: extraction, verification, reconciliation, the deletion saga, nightly consolidation and integrity sweeps), connected by a transactional outbox and an idempotent job queue, so nothing is ingested and silently unprocessed.
Postgres is the source of truth; Qdrant is a rebuildable index. Originals live in MinIO under SSE-encrypted, tenant-scoped keys; Zitadel provides identity; Caddy terminates TLS. Facts, not raw documents, are what gets stored and searched. One instance is one tenant: isolation is a deployment boundary, not a row filter.
All model and embedding calls go through a single gateway seam, with adapters for EU-hosted Mistral, any OpenAI-compatible endpoint, Anthropic, and a local Ollama runtime, so inference can stay entirely on your own hardware. Every configuration is published as its own entry in the trust scores, so "works with your model" is measured, not claimed.
Deeper reading: the technical architecture, the normative specification, and the feature documentation.
- Website: cogeto.eu, including the whitepaper
- Documentation:
docs/ - Security and safety:
docs/security/, how the protections work and how to verify them - Run it locally:
docs/running-locally.md - Deploy it:
docs/deployment.md
The core is AGPLv3 (LICENSE); commercial licenses (an AGPL exemption)
are available (COMMERCIAL-LICENSE.md). The Cogeto name and
logo are trademarks and are not covered by the code license; see
TRADEMARK.md and assets/brand/README.md.
Maintainership and IP: MAINTAINERS.md.
Contributions are welcome. Read CONTRIBUTING.md for the delivery
loop, running the tests and the eval harness, and the golden-set rules. Contributions
require accepting the CLA with a single PR comment; the reasoning is stated
there honestly. Security reports: SECURITY.md.