Skip to main content
You don’t need this page to build agents. Read it when you want to know why the robot did something. The Innate agent is a loop that runs on the robot. Your agent gives it a prompt, skills, and inputs.
Image to make: The agent loop. Diagram of one turn: camera frame and new events (speech, skill feedback, inputs) go into the Innate agent, which sends them with the agent’s prompt and skills to the model, then acts by running a skill, speaking, or waiting. Show the agent file feeding prompt, skills, and inputs into the loop. Replaces the old system diagram, which still says “B.A.S.I.C.” and has “TKTK” labels.

One turn at a time

The agent works in turns, one at a time:
  1. Look. Take the latest camera frame and everything new since the last turn: what you said, what a skill reported, what an input sent.
  2. Think. Send that to the model with the agent’s prompt, and its skills described as tools.
  3. Act. Run a skill, say something, or wait.
Speech streams out sentence by sentence, so the robot starts talking before the turn is finished. If you speak before the robot does, the turn restarts with your words included. Every skill in the agent becomes a tool. The execute() signature becomes the parameters and guidelines() becomes the description. A few tools are always there:

Watch it think

The web app’s Brain page shows every turn: the frames it saw, what it decided, and how long it took. Click INSPECT TURN to see the full request. It’s the fastest way to learn why the robot did something. The web app's Brain page

Which model runs it

The default is Gemini, google:gemini-3.6-flash. To pick another, use Model on the web app’s Agent page; see Choose the model. Settings → Agent → Model changes the same setting, and its Custom… option takes any vendor:name. The change applies without a restart. Add vendor keys in the web app under Settings → Keys → Model providers. A saved key is used from the next model switch or skill call, without a restart. Robots ship with an INNATE_SERVICE_KEY, which is free for 300 hours; ask on Discord for more. With no key at all, you can still drive and run skills by hand. Without the web app, set llm_model in config/settings.yaml and the keys in ~/innate-os/.env.