Proactive AI agent · Self-evolving

It doesn't wait to be asked.It knows when not to speak.

Rna lives in your project. It keeps investigating while you are away, and only comes to you with evidence. Correct it once and it grows a rule it will check.

Interactive demo

HUD redesign~/ink-bird

Idle

Make the HUD score badge readable at a glance.

Keep talking, or change direction any time…

Decision log

Every wake is judged first, before the main model is called

    Initiative

    Most wakes end in silence

    Changes in the project keep waking Rna. Each time it picks one of four: wait, work, share or learn. Change your own state below and watch what moves, and what does not.

    Wait
    29
    Work
    6
    Share
    4
    Learn
    1
    WaitWorkShareLearn

    Delivered

    • Nothing worth telling you yet.

    Held

      No fixed quota of messages

      Whether it speaks depends on the evidence this time, and on how you reacted to similar messages before.

      Your state only affects speaking

      Typing, focus and mute only delay messages. Investigation and work in the background carry on.

      Ignored topics need more to resurface

      A topic nobody answers needs stronger evidence next time. Reply and settle it, and the topic closes.

      No re-checking what was just checked

      Before working it asks: does this only repeat a check just done? With nothing changed since, it does not spend the tokens again.

      While you are away

      Close the window and the project is still being understood. This is what a real piece of background work looks like.

      Notice

      A post-build screenshot comparison shows a new difference at 390px. That is evidence, not a hunch.

      Observation

      Screenshot diff · 390 × 844

      HUD score badge overlaps foreground/reeds.png by 38%

      foreground/reeds.pngz-index 25
      hud/score-badgez-index 20
      world/backgroundz-index 0

      Source: post-build screenshot · 4 min ago

      Investigate

      The background reproduces it in a sandbox. Every file it touches is snapshotted and can be reverted in one click.

      Background work

      Reproduce at 390px and check layering

      1. Start preview at 127.0.0.1:5173
      2. Capture 390 and 430 widths
      3. Compare z-index: HUD 20, reeds 25
      4. Write hud-layering-report.md
      Sandboxed · 1 file changed

      Wait to tell you

      When you return, progress is grouped by topic. Minor things go to the inbox instead of interrupting you.

      While you were away3 topics
      1. 1HUD under reedsOnly at 390px; 430px and up are fine. Report is ready.
      2. 2Low-end frame rateRedmi 9 back to 52 fps with transparency sorting off.
      3. 3Asset cleanup · mutedTwo unreferenced .ogg files, to delete in the next cleanup.

      Keep promises

      Anything it said it would do becomes a commitment, with a recipient and a due time judged by evidence.

      Commitments
      • Move the HUD above the reeds and add a 390px screenshot

        You asked · 3 h overdue

      • Re-measure Redmi 9 frame rate with sorting off

        Rna promised · due in 3 h

      Let it make changes. Take any of them back.

      Subagents and background work each change files in their own worktree and merge back when done. Every turn keeps a checkpoint you can roll back in one click, and Rna remembers what you undid.

      worker · fix HUD layering

      Working in its own worktree
      • src/hud.css
      • src/reeds.js

      worker · document 390px

      Working in its own worktree
      • docs/hud.md
      • src/hud.css

      Project folder

      • src/hud.css
      • src/reeds.jsyour uncommitted edit
      • docs/hud.md

      Evolution

      Correct it once. It grows a rule.

      Evolution changes one gene at a time. Pick a correction and watch it get routed, tested, and grown onto the project gene tree.

      Pick a correction

      JEV routing

      Checkable from file text?-.--
      Does it change the method?-.--

      Gates

      1. Program check
      2. Diff review
      3. Real run
      4. Trial in use

      Generation 7

      ProfilePromptSkillToolGuardStandard7
      ActiveTrialRetired

      Pick a node on the tree to see details

      Judge cheaply first. Let the big model write second.

      Yes or no, which one, how much: those go to JEV, a judge model that only answers typed questions and never writes text. The main model shows up only when something needs writing.

      Study data and how to ask
      ≈1/1000
      of the main model’s costAbout $0.042 per million input tokens; output is free
      ≈200ms
      per judgmentAn answer before a single word is written
      282ms
      20 questions, one call4.6 s when asked as 20 separate calls

      Figures from a capability study of jev-1.13.0 on 2 October 2026.

      Desktop, terminal and code share one daemon

      • Desktop

        A macOS Apple Silicon app with Node and the daemon built in. Close the window; background work keeps going.

      • CLI

        Connects to the same daemon as the desktop app. Start a session in the terminal, continue it on the desktop.

      • Rna SDK

        Its own execution kernel with no third-party runtime dependencies. Sessions, tools, skills, MCP and the initiative loop all work on their own.

      Terminal
      # Hand it to the system service manager; closing the terminal is fine./rna service start# A folder is a project; opening it again reuses the project./rna project-open ~/code/ink-bird./rna chat --project PROJECT_ID# See what the background is doing, and steer it if needed./rna background PROJECT_ID./rna background PROJECT_ID steer ACTION_ID --text 'Check official sources first'
      example-rna.mjs
      const session = await createSession({  sessionId: 'hud', projectId: 'ink-bird', cwd, stateDir, model,  tools: await createWorkspaceTools(cwd, { deniedPaths: [stateDir] }),});const running = session.prompt('Check HUD layering at 390px');await session.steer('Low-end devices first');     // at the next safe boundaryawait session.followUp('Add a screenshot after');  // right after this turnawait running;

      Status

      What works today, and what does not yet

      Every release ships with its acceptance record, including what failed.

      Works today

      • macOS installers (Apple silicon and Intel), each started once on its own platform before release
      • 17 provider presets, including signing in with a ChatGPT plan
      • Subagents and background work change files in their own worktrees and merge back; every turn can be rolled back
      • Memory is either built-in local memory (no Docker) or OpenViking semantic memory, with explicit errors when the service is unavailable
      • Skill and MCP install, assigned per project, even from inside a chat
      • Background commands run under macOS seatbelt; changes revert in one click
      • App updates, restore points and offline data recovery

      Not yet

      • Developer ID signing, Apple notarization and an update feed
      • Windows and Linux desktop builds are previews and not code-signed
      • Keys live in a local 0600 file, not the system keychain
      • Foreground commands and MCP are app-level checks, not an OS sandbox
      • Claude connects with an API key only; Anthropic does not allow subscriptions in third-party apps

      Let the project move on its own

      Projects, sessions and keys stay on your machine. Connect the model service you already use and open your first project in minutes.