Ivanna
A personal AI operations system on my Mac: voice requests, one shared memory and scheduled jobs.
Running on my Mac. Architecture last revised in September 2026.
12 recent entries replayed into the next voice job, written by the bridge, not the agent
- Where
- Personal project
- Role
- Design and build
- Built with
- Python, Ollama, SQLite vector search, launchd
What I made
I built a voice bridge in standard-library Python. Quick questions get a read-only answer; longer requests become coding-agent jobs, and anything that looks like a delete, push, deploy or send waits for my yes.
Background jobs run on a schedule, local models handle private text that stays on the machine, and every job reads from and writes to one shared memory.
- Requestby voice or from a scheduled job
- Voice bridgeread-only answers; risky jobs wait for a yes
- Memorykeyword, vector and episodic search, merged
- Jobsagent jobs, and local models for private text
- Decision queuewhat needs my call, answered daily
46background jobs defined under launchd
3memory layers: semantic, episodic, procedural
11architecture decision records
What came out of it
Memory the bridge writes
After every job the bridge, not the agent, logs the result and replays the last 12 entries into the next run. Search reaches further back, across notes, a vector index and past transcripts.
Where it's going
The full version runs on its own and keeps improving: one memory across every agent, scheduled work, and a loop that proposes, tests and builds its own upgrades. Anything that needs my call reaches one queue, and I merge every change.
- NowRunning on my MacVoice requests, one memory, scheduled jobs and two agents that review each other.
- Health checksEvery service reports in, so a silent failure gets noticed.
- Local by defaultAnything private is handled only by models on the machine.
- Self-improvingIt learns from each run and builds its own upgrades; I merge them.