aidos (AI Diary Operating System) — the control-plane CLI for an agentic harness: roadmap index, knowledge-graph reindex, and module setup.
Project description
aidos
AI diary OS — the control-plane CLI for an agentic harness. Index your roadmaps, keep knowledge graphs fresh, and stand up new modules, all from one command.
What it does
aidos is the operations layer that sits above a multi-module workspace and manages the shared machinery your agent depends on:
- Roadmap index — parse a roadmap markdown into identified items (stable UUIDs), classify them done / active / deferred, and build a SQLite FTS5 keyword index for fast search. The markdown stays the source of truth; the index is derived.
- Graph reindex — discover every subproject's knowledge graphs, report freshness, and rebuild them in the correct virtualenv. It never kills your MCP servers — it reports which ones need a restart.
- Module setup — a reproducible recipe (and script) to make a new Python module a first-class citizen: its own venv, its own code + docs graphs, and wiring into the shared portal.
It is CLI-first: all logic lives behind plain functions, so it is testable and scriptable without a server. A future control MCP wraps the same CLI.
The name is a nod to aidiary (the AI diary memory system): aidos is the OS layer around it.
Install
Requires: Python 3.12+
pip install aidos
Building a module's own knowledge graphs additionally uses aidiary[graphs] (installed editable in dev):
pip install "aidiary[graphs]"
Quick start
1. Check graph freshness across the workspace
aidos status
Lists each subproject's graph layers (code / docs / …) with a ✓ fresh / ⚠ stale / ✗ missing badge based on graph.json mtime vs. newest source.
2. Index a roadmap and search it
aidos roadmap index path/to/ProjectRoadmap.md
aidos roadmap search "graph reindex" --db output/aidos/ProjectRoadmap.db
index assigns a stable UUID to every item and writes a SQLite FTS5 index + a JSON sidecar. search is instant keyword retrieval — no embeddings, no LLM.
3. Preview a done / active split (non-destructive)
aidos roadmap split path/to/ProjectRoadmap.md
Writes *-archive.md (done) and *-active.md (active + deferred) previews. The original file is never modified — you review first.
4. Rebuild knowledge graphs
aidos reindex --dry-run # show what would rebuild
aidos reindex --subproject aidos # rebuild one subproject's code graph
Any rebuilt layer is reported as restart_required — restart those MCP servers through your editor (or your restart script), never by killing the process.
Directory layout
my-module/
├── pyproject.toml
├── config/graphs.toml # graphs.code (src/, ast) + graphs.docs (docs/, semantic)
├── src/<pkg>/ # your package
├── docs/ # concept docs (feed the docs graph)
└── output/ # generated artifacts
├── aidos/ # roadmap index db + json sidecar
└── graphs/{code,docs}/ # graph.json + graph.html
Command reference
| Command | Purpose |
|---|---|
aidos status |
Report knowledge-graph freshness across subprojects |
aidos roadmap index <file> |
Build the SQLite FTS5 search index for a roadmap |
aidos roadmap search <query> --db <db> |
Keyword-search the index |
aidos roadmap split <file> |
Non-destructive done / active split preview |
aidos reindex [--subproject N] [--docs] [--dry-run] |
Rebuild per-subproject graphs |
Design principles
- Markdown / files stay the source of truth — every index, db, and graph is a derived artifact. Producers and consumers connect via files on disk, not imports.
- Keyword over embeddings — on a few-hundred-item corpus, SQLite FTS5 is instant and sufficient; vector search is deferred until the data demands it.
- Never kill a stdio MCP server — reindex reports
restart_required; it does not respawn processes.
What's new
0.0.1
First cut — the Developer-Control plane CLI
roadmap—index(parse → stable UUIDs → done/active/deferred → SQLite FTS5 + JSON sidecar),search(FTS5 keyword),split(non-destructive done/active preview).reindex— discover subproject graphs, report freshness, rebuild via each subproject'saidiary-graphs; reportsrestart_required(never kills MCP servers).status— workspace-wide graph freshness.- Reproducible module setup — idempotent
setup.sh(venv + editable installs + graphs) and a documented "make a module a first-class harness citizen" guide. - Typer CLI, stdlib-only core (plus Typer); builds to sdist + wheel.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file aidos-0.0.1.tar.gz.
File metadata
- Download URL: aidos-0.0.1.tar.gz
- Upload date:
- Size: 14.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7c1c8e4812050eb8f6e6f1850cf1986d37a7d1d76bb9eeb9ada1246dbd7a9664
|
|
| MD5 |
9e0beeb6a08a1e8c85228ab00dc43d8e
|
|
| BLAKE2b-256 |
be4d4c76d11c995db207f1af65b11698d16e924a15db25e42e319964087b8445
|
File details
Details for the file aidos-0.0.1-py3-none-any.whl.
File metadata
- Download URL: aidos-0.0.1-py3-none-any.whl
- Upload date:
- Size: 13.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8b0f2707718fe72c331fd366198692d8e3dd78e8733d8021ab4954c7f7869d1a
|
|
| MD5 |
97b7ca1eec9c5f71b180ca8f773a162d
|
|
| BLAKE2b-256 |
03512fac96e27e538a3c71e4d042ab980f0a37e1b79e5c1700f81893f58875a7
|