Dotabases
The one primitive everything in Dots is built on: typed rows under a closed schema, enriched by behaviors, connected by edges, and read through views by you, the CLI, and your agents.
A Dotabase is a typed collection of rows that keeps its structure. Because the structure survives the act of writing something down, the same knowledge is a table you scan, a graph you traverse, and context an AI reads. Nothing is exported or converted between those three readings.
Everything you or an agent stores in Dots is a row in a . A Tasks Dotabase and a Songs Dotabase are the same two database tables wearing different schemas, different views, and different behavior bindings. That is what makes one primitive rather than a bundle of features: a capability built for one Dotabase works on every Dotabase, including the ones you have not created yet.
Get Started
- How Dotabases WorkA Dotabase is the platform's foundational primitive — typed rows with a schema, behaviors, edges, views, and an Operation Manual.
- Create A DotabaseName a Dotabase, give it a schema, and add your first rows — from the CLI or the app.
- Views And LensesThe same rows, seen many ways — table, board, gallery, calendar, graph, and dashboard views, each a saved lens over your data.
- Foundational And Internal DotabasesFour canonical foundational Dotabases ship alongside always-seeded internal Dotabases such as Context Cabinet and Glossary.
- ConversationsHow live chat turns and imported coding-agent sessions land in one seeded Dotabase, what a conversation row carries, and how to read one back from the CLI, search, or the app.
- Import Your Coding-agent ConversationsBring your local Claude Code, Codex, and Cursor session history into the Conversations Dotabase: consent per folder, back-fill once, then tail for new sessions.
- Import From MarkdownBring a folder of Markdown files into a Dotabase with one command — frontmatter becomes properties, and re-runs stay idempotent.
- Publish A Dotabase To The WebPublish selected views of a Dotabase as an anonymous public page, share the link, and read the same publication back through CLI and REST.
What Happens When A Row Is Written
A write is checked against the schema first, and a value of the wrong type or a property the schema never declared is refused before anything is stored. The row then moves through the behaviors its Dotabase binds. Each behavior runs on one of six lifecycle hooks: a row is created, updated, archived, or restored, the schema changes, or an event arrives from elsewhere. Formula properties recompute in the same write, and rollups that summarize related rows refresh shortly after. Archiving is reversible: an archived row drops out of the default row listing, which reads only live rows, and restoring it returns the row to that listing.
Key Features
- Typed Rows — a title, a body, and typed properties drawn from thirty-three built-in property types, so a date comes back a date and a number a number.
- Closed Schema — a write naming a property the schema does not declare is refused, which is what lets a filter, a view, or an agent depend on the shape.
- Behaviors — thirty-nine enrichment behaviors across six lifecycle hooks, each Dotabase binding only the ones it wants: classification, embedding, version history, relation-to-edge promotion.
- Typed Edges — seventy-nine built-in verbs in five categories, connecting rows across two Dotabases or out to a code symbol.
- Ten Types — table, board, gallery, list, calendar, timeline, stream, wheel, graph, and dashboard over the same rows. A view is a lens, never a copy.
- Hybrid Search — full-text and semantic retrieval over the same row, because both the search vector and the embedding live on it.
- Operation Manual — stored guidance that rides along to an agent reading the Dotabase, so it knows how the rows are meant to be used. See the Dotabase Operation Manual (DBOM).
- Three Ways In — the web app, the
dotsCLI, and any agent on MCP reach the same data, every read and write scoped to one company.
Resources
- DIIICE — the six-value taxonomy rows are classified against.
- Chat Overview — hold a conversation against these rows.