CoDNA Request access
Contents

Docs

How CoDNA works, and why it works that way. These pages come from the project's own repository, so they change with the code.

Getting started

  • Connect your AI agentCoDNA is meant to be read through the agent you already talk to. Each person connects their own: the agent signs in as you, and searches, reads and writes exactly what you can, nothing more.
  • SkillsA skill tells an agent how your team does a task: how to write a proposal for a customer, how to answer a question about refunds, what goes in a weekly report. In CoDNA a skill is an ordinary page in the wiki's skills…
  • AgentsAn agent your team runs for other people, such as a support bot, an onboarding guide or an assistant in a channel, can use CoDNA as what it knows. It is not anybody's assistant, so it does not sign in as a person. It is…

How it works

  • ArchitectureA company's knowledge is scattered across Slack threads, Google Docs, PDFs, and people's heads. Teams increasingly ask an AI agent instead of searching, but the agent has nowhere trustworthy to look — and if you give it…
  • PermissionsCoDNA's central constraint: an AI agent acting for a person must see exactly what that person can see. Not more. Every rule below exists to make that true on all three surfaces — the REST API, the MCP server, and search…
  • LinkingDocuments reference each other with ordinary inline markdown links. Those references form a graph, and the graph is what powers share suggestions, backlinks, and the "a document you link to just moved" flow.
  • Images and filesA page can hold images and PDFs. Each one belongs to that page and to nothing else: whoever can read the page can open its files, whoever can edit the page can add to it, and sharing the page shares them. There is no…
  • SearchTypesense holds a derived index. It is never written to directly and never read as truth — it can be dropped and rebuilt from Postgres at any time. What it must never do is show someone a document they cannot open.
  • IngestionIngestion gets existing material into CoDNA: uploads, pasted text, scraped pages, whole exports from another tool, recordings of meetings. Everything it produces lands in raw as markdown, with the original file kept…
  • TranscriptionCoDNA turns a recording into a transcript in raw. It does not transcribe anything itself. It hands the recording to a transcription service at CODNA_TRANSCRIBE_URL and writes the page from what the service answers.…
  • MeetingsPeople start an online meeting from their workspace, hold it as a video call, and find it in raw afterwards: the recording, and a transcript that names who said what. CoDNA runs no calls itself. A meetings service at…
  • AutomationsSharing everything tagged runbook with the ops team is a one-time action. Making it keep happening is a script. (Sharing a folder needs no script: a folder share stands, and shares what is put there later — see…
  • MCP serverCoDNA's reason for existing. An agent connects on behalf of a person and gets exactly that person's visibility — no more, and the same rules the web UI enforces.
  • ExportExport is not a backup format. It is the answer to "what happens if we stop using CoDNA?" — and the answer has to be a directory of markdown files that are useful on their own.
  • Data modelPostgres is the source of truth for everything. Typesense holds a derived index that can be dropped and rebuilt at any time (search.md). This document specifies every table, the state machines that govern them, and — at…

Reference

  • SettingsCoDNA is configured through the environment and nothing else: the one mechanism that works the same in a shell, a Compose file, a Kubernetes ConfigMap and a systemd unit. These are all of its settings. .env.example sets…
  • Command lineEvery command of codna, the one binary that runs CoDNA and everything around it, with each command's flags.
  • MCP toolsWhat an agent connected to CoDNA is offered: 39 tools, each as tools/list describes it to the model. How an agent connects, and what it is told when it does, are in MCP server. Every tool acts as the person the agent…

Decisions