OpenAI Codex

Runs on your computers with your ChatGPT subscription or an OpenAI API key. Codex reads the bot’s AGENTS.md.

Steps

  1. Turn it on. In Settings → AI providers, enable it. Your computers install it within a couple of minutes.
  2. Sign in on each computer that runs these bots, using Sign in in Settings → Computers. For a Docker computer, you can also run this in a terminal from that computer’s install directory (/opt/tico-runner-<name> for a named install; /opt/tico-runner for an unnamed install):
    docker compose -f runner.compose.yaml exec -u bot runner codex login --device-auth
  3. Create the bot. Open Settings → Bots → Add from template, or ask BotOps, and brief it like a new teammate. BotOps builds its repo.
  4. Pick the model in Settings → Bots: a GPT model. Luna 6 at max effort is a reasonable default.
  5. Activate it and give it the first piece of its goal.

The bot’s repo

Every hosted bot is a Git repo named bot-<name>. Add from template or BotOps makes it for you; you can also start from example-support.

bot-support/
├── AGENT.md          instructions (required)
├── AGENTS.md         → AGENT.md, for Codex
├── CLAUDE.md         → AGENT.md, for Claude Code
├── bot.yaml          name, routines, tools
├── state.md          what it’s working on now
├── memory/           learnings.md, decisions.md
├── knowledge/        docs it works from
├── playbooks/        how it does recurring jobs
├── software/         tools it builds for itself
└── skills/
Example: AGENT.md
# Support

## Owns
Replies to Acme customer support questions, from first message to resolution.

## Goal
Accurate, friendly replies that follow our guidelines, sent within 5 minutes.

## How I work
- Answer from our documentation in knowledge/.
- When I’m unsure, open a task for Dana instead of guessing.
- Save great replies to my catalog in software/ and turn repeats into macros.

## Never
- Promise refunds or discounts. Ask Dana.
Example: bot.yaml
name: support
display_name: "Support"
labels: [owner:support]
reasoning_effort: medium
max_run_minutes: 60
outbound_send: false
routines: []
tools: []

Leave runtime and model out of bot.yaml. Choose them in Settings → Bots instead.