cookbook/01_demo/README.md
A demo AgentOS built from wiki agents. Ingest URLs, images, voice memos, or PDFs. Store them as clean, linked pages across three backends: local markdown files, a git repo, or Notion.
Built on AgentOS with SQLite-backed sessions. The codebase is small enough to grok in an afternoon, and stable enough to build on.
For a production version of this demo, see the agent-platform-railway codebase.
| Agent | What it does |
|---|---|
| LocalWiki | Reads and writes a markdown wiki. Ingest a URL, an attached image, or a PDF. It digests and files a page in one call. |
| GitWiki (env-gated) | The same agent with the wiki stored as a git repo. It auto-commits and pushes after each write. Registered when WIKI_REPO_URL and WIKI_GITHUB_TOKEN are set. |
| NotionWiki (env-gated) | The same agent with the wiki stored as a Notion database, one row per page. The database is the source of truth your team opens in Notion. Registered when NOTION_API_KEY and NOTION_DATABASE_ID are set. |
| CodeSearch | Answers questions about this repository, with file paths and line numbers. |
The three wiki agents can also produce downloadable HTML files. Agents run on gpt-5.5 by default, and you can use any model (see settings.py).
uv venv .venvs/demo --python 3.12
source .venvs/demo/bin/activate
uv pip install -r cookbook/01_demo/requirements.txt
export OPENAI_API_KEY="..." # required: default model is gpt-5.5
export PARALLEL_API_KEY="..." # optional: raises limits on the keyless Parallel MCP
export GOOGLE_API_KEY="..." # optional: for gemini audio and video
GitWiki and NotionWiki each switch on when their backend credentials are set. See "Enable the other wiki backends" below.
fastapi dev cookbook/01_demo/run.py
Then open os.agno.com and sign in:
http://localhost:8000, call it Local AgentOSLocalWiki and CodeSearch run with just OPENAI_API_KEY. GitWiki and NotionWiki are the same wiki agent pointed at a different backend, and each registers once its credentials are set.
The wiki lives in a git repo. Every write is auto-committed and pushed.
main branch exists for the first clone.repo scope.export WIKI_REPO_URL="https://github.com/<owner>/<repo>.git" # HTTPS, not SSH
export WIKI_GITHUB_TOKEN="github_pat_..." # contents: read and write
export WIKI_BRANCH="main" # optional, default: main
The URL must be HTTPS. SSH git@… URLs are rejected. The token is embedded for auth and scrubbed from logs. The clone is stored under data/git-wiki/ (gitignored).
The wiki is a Notion database, one row per page, that your team opens in Notion. The agent files markdown, and Notion stays the source of truth.
ntn_…). The default read, insert, and update content capabilities are all it needs.?v= (the v= value is the view, so leave it out):
https://www.notion.so/<workspace>/<DATABASE_ID>?v=<view_id>
export NOTION_API_KEY="ntn_..."
export NOTION_DATABASE_ID="<32-char hex from the URL>"
The local mirror lands under data/notion-wiki/ (gitignored). On startup the backend rebuilds the mirror from Notion, so the database is always the source of truth.
evals/assets/sample-diagram.png (or your own image or PDF) to LocalWiki: "Digest this and file it under notes/.".html file.From the repo root:
python -m cookbook.01_demo.evals # run all cases (concise)
python -m cookbook.01_demo.evals -v # stream the full agent run
python -m cookbook.01_demo.evals --case <name> # run one case
Or from cookbook/01_demo:
python -m evals
python -m evals -v
python -m evals --case <name>
Each case runs one agent once, then checks the response with AgentAsJudgeEval (an LLM rubric with a binary pass or fail) and optionally ReliabilityEval (a tool-call assertion). Results log to SQLite. Connect AgentOS at os.agno.com to see history.
To add an agent: drop a file in agents/, register it in the AgentOS(agents=[...]) list in run.py, add quick prompts to config.yaml, and restart. Add eval cases in evals/cases.py once it's stable.
./cookbook/01_demo/generate_requirements.sh
Edits to requirements.in are the source of truth. The .txt is regenerated and pinned with uv pip compile.