Aiko is the agent layer I am building over my own machine: a local daemon, mobile app, Telegram bridge, tool runtime, and memory system wired into one loop. It gives me one interface for files, shell, Git, Docker, calendar, web, voice, image generation, and long-running build work.
Aiko is not a single binary. It is a coordinated system of three pieces: a TypeScript daemon that holds the identity, a React Native phone app that reaches Aiko over a Tailscale WireGuard tunnel, and a Telegram bridge for casual contact and on-the-go control. Everything writes to one unified event stream.
The brain. A Linux background process running on Minimax via OpenRouter. Holds the appraisal engine, limbic state machine, memory store, skill executor, proactive engine, and the FSM that drives the project factory.
Android (Expo / React Native) client. Reaches the daemon's 100.x.y.z:8080 Tailscale IP and opens
a long-lived WebSocket — zero public internet, zero cloud, encrypted end-to-end by WireGuard.
A persistent Telegram bot for casual contact and on-the-go control. Destructive actions are gated behind a TOTP challenge; the same shared logger streams ACK events back into the unified pipeline.
Every inbound message — Telegram or mobile — runs through the same six-stage pipeline. Two of those stages are fast pattern matchers that never touch the LLM. Two background ticks run in parallel: a 60-second decay loop and a 3 AM distiller that compresses yesterday's diary into long-term facts.
Pattern matcher reads the user message and emits a limbic delta — no LLM call.
Delta applied to persisted state. Mood overlay derived for the system prompt.
Dynamic 8-section system prompt assembled per turn; reply streamed back.
Inline markers [EXEC:] [OPEN:] [READ:] parsed, executed, fed back.
Energy spent. Annoyance partially cathartically released. Trust adjusted.
Turn appended to today's diary. Event mirrored to mobile + dashboard.
Background tick — limbic decay applied, queued proactive messages delivered to whichever surface is connected.
Nightly distillation — yesterday's diary read, compressed into a summary, relationship facts extracted and persisted to facts.json.
Memory in Aiko is not one bucket — it is a layered store, each tier with its own lifetime, write cadence, and access pattern. Identity is permanent and read every session; relationship facts are extracted nightly; episodic diaries grow append-only; working memory is per-session; world-state is live.
Who Aiko is, who the user is, the relationship contract. persona.md, style doctrine, hard rules. Loaded every session.
Preferences, habits, opinions, triggers. JSON key-value store extracted nightly by the distiller from raw diary text.
Daily diary files at episodic/YYYY/MM/DD.md. Every turn appended. Summarized and compressed at 3 AM the following night.
Last 20 turns. What was just said. Cleared when the daemon restarts; reseeded from the diary on warm boot.
Machine state, time, environment, connected surfaces, currently-running skill jobs. JSON, rewritten on every tick.
Six dimensions. Each one persisted across restarts, mutated by the appraisal engine on every message, decayed on a 60-second tick, and overlaid onto the system prompt as a mood directive. Baseline-locking means that if affection and trust stay high for enough consecutive turns, the resting floor permanently rises.
Skills are arranged as a directed graph, not a flat list. Tier-0 primitives must exist before higher tiers can
compose them. Every skill ships a manifest validated against the constitutional SKILL_LAW.md
(20+ required fields). The project-build skill at Tier 3 wraps the entire three-agent factory below.
This is the mothership: not a folder of old repos, but a core that can wrap them, validate them, route them, and let Aiko use them. A hackathon bot, a CLI utility, a media script, a model pipeline, or a weekend automation stops being a dead project once it ships as a manifest-backed skill. The graph records its dependencies, inputs, outputs, permissions, safety rules, and tier placement, so Aiko can compose it with everything else instead of treating it as another isolated codebase.
When Aiko is asked to build something, it does not write the code itself — it spawns three Gemini CLI sub-agents that operate as a finite-state-machine. The Architect plans and talks to me; the Executor writes code; the Auditor verifies and gatekeeps. Every project gets its own war room. All 29 historical projects are consolidated into a cross-project SQLite with full-text search over 42,847 events.
The only agent that talks to me. Source code is read-only. Owns the canonical task plan (CSOT.md). Drives BRIEFING → ALIGNING → REVIEW phases.
Pure code implementer. Never plans, never talks to me. Full CRUD on source + tests. Stages clean commits in the [AIKO:TASK] format. Never touches node_modules, .aiko/, or Aiko.md.
Verification gatekeeper. Read-only on source code, full write on tests. Never rewrites production code. Routes the FSM forward, back, or to BLOCKED.
Factory run — demo reel coming soon
BRIEFING → CODING → AUDITING → DONE, recorded end-to-end
Aiko is not a public product. The case study above is the public face; the live system is private. Demo is
available on request — a short walk-through of the mobile surface, a real proactive message firing, a factory
run from $build to delivery, and the live structured event stream straight from the daemon.
Recorded 29 April 2026 — portrait capture from the React Native phone app over Tailscale.
Welcome.