Skip to main content
An agent is a prompt plus a list of skills, written as one Python class. New to agents? Start with Your first agent and skill. The same robot becomes a security guard or a tour guide depending on which agent runs.

Write an agent

The quickest way is the web app: Agent page, agent picker, Create agent. It saves a Python file like the one below. To write it by hand, save this as ~/innate-os/workspace/custom_agents/greeter.py:
It loads within a second or two of saving. Import skills as classes, as above, so your editor catches typos and renames. Every agent can already talk, wait, and stop a running skill. You don’t list those.

Write a good prompt

Skills decide what the robot can do. The prompt decides what it does. The model follows it literally, so be specific:
  • Say who the robot is and how it speaks.
  • Give the goal as concrete steps.
  • Say what to do in edge cases, like when nobody is there or a skill fails.

Choose the model

On the web app’s Agent page, click the agent’s name to open its panel, then pick a model from Model. The robot switches without a restart, and the next reply comes from the new model. This is the robot’s model, shared by every agent that doesn’t pin its own. Settings → Agent → Model changes the same setting. A model whose vendor key is missing stays in the list and says so; add the key under Settings → Keys. To pin a model to one agent, set model on its class:
Starting the agent switches the robot to that model, and the Model picker shows it instead of offering a change. Vendors, example names, and the key each needs are in Which model runs it.

Start an agent

  • Web app: open the Agent page, pick your agent, and press Start. Reset clears the conversation.
  • Phone app: tap the agent’s card on the Home screen. Pull down to refresh the list.
  • On boot: in the phone app, long-press a card and choose Set as default.
Starting a different agent stops the current one and cancels its running skill.

Built-in agents

These ship in workspace/innate_agents/. Read them for working examples.

Troubleshooting