Skip to main content
The Innate agent is the loop that makes your robot act on its own: it looks through the camera, decides what to do, and runs a skill. It runs on the robot, inside Innate OS.
Naming: “the Innate agent” is the loop. The “agents” you write (see Agents) are Python files — a prompt, some skills, some inputs — that tell the loop who to be.

Look, think, act

The agent works in turns. One turn at a time, never two at once:
1

Look

Take the latest camera frame, plus everything that happened since the last turn — what you said, what a skill reported, what a sensor sent in.
2

Think

Send that to a vision-language model, together with your agent’s prompt and its skills described as callable tools.
3

Act

Do what came back: start a skill, drive somewhere it can see, say something out loud, or nothing at all.
Speech streams out sentence by sentence as the model writes it, so the robot starts talking before it has finished thinking. Interrupting works. If you talk while the robot is mid-thought and it hasn’t started speaking yet, that turn is thrown away and re-run — this time seeing everything it saw plus what you just said. Nothing is lost: a turn only counts as done once it commits.

Watching it think

The web app’s Brain page shows the loop as it runs — the exact frames each turn saw, what it decided, and how long it took. The web app's Brain page while an agent is running INSPECT TURN opens the full request behind any turn. It’s the fastest way to find out why the robot did something.

Skills are the agent’s tools

Every skill in the active agent becomes a function the model can call. Your execute() signature becomes the parameters; your guidelines() (or class docstring) becomes the description. That’s the whole contract — see Code-Defined Skills. Three tools are always there, whatever your agent lists: While a skill runs, stopping it is the only action offered. The robot can still talk — it just can’t start a second skill on top of the first.

Which model runs it

The agent runs on Gemini (gemini-3.6-flash by default — the model is a brain_client_node setting in config/settings.yaml). There are three ways to connect it, set in the .env file on the robot: The hosted brain is free for all users of Innate robots for 300 cumulative hours — and probably more if you ask us on Discord. Your service key lives in ~/innate-os/.env on the robot; cat ~/innate-os/.env shows it. If you’ve lost it, ask us on Discord or by email.

It remembers where things are

As the robot drives around, it keeps a spatial memory: the views worth keeping, tied to the map and to when they were seen. Ask “where did you last see my keys?” and it searches those views, answers, and can drive back to the spot. Your skills can search it too — see Spatial Memory.