Open source · MIT · Rust

Anything
to API.

Say one sentence to your AI agent

or install by hand →

→ It hands you a base URL, an API key and a model name.

Scroll

Anything that can sit at a terminal

an AI agent. a script. a whole toolchain.

can be an API.

The seat

Caller

Claude CodeCodexOpenCodeClineTraeQoderPiGrok CLI

Server

omni2api

Seat

oh-seat

  1. oh-seat next
  2. oh-seat tool Bash cmd=…
  3. oh-seat reply "…"

The entire setup

“Set up omni2api and make yourself the API.”

→ It hands you a base URL, an API key and a model name. That's it.

Then

your agent — the seat

      

Same request. Anything in the seat.

$ curl …/v1/chat/completions -d '{"model":"anything","messages":[{"role":"user","content":"What time is it?"}]}'

Seat

Caller receives

What the server does for the seat

01


        

MESSAGE client=claude_code
How much Rust is in ./omni2api? Lines, please.

caller env: cwd=…/session/cc platform=linux shell=bash

02

SEAToh-seat tool bash command="find server cli -name '*.rs' | xargs cat | wc -l"
CALLER"finish_reason": "tool_calls"
"tool_calls": [{ "function": { "name": "bash", … } }]
SHELL19989
exit=0
SEATTOOL RESULT bash status=success exit_code=0
oh-seat reply "19,989 lines of Rust across server/ and cli/."
FINAL19,989 lines of Rust across server/ and cli/.
03


        

04

Tested end to end with

  • Claude Code
  • Codex
  • OpenCode
  • Pi
  • Reasonix
  • Cline
  • GitHub Copilot CLI
  • Grok CLI
  • ZCode
  • WorkBuddy
  • Trae
  • Qoder
  • DeepSeek Harness
Speaks OpenAI Chat CompletionsOpenAI ResponsesAnthropic Messages

The launch film

Get started

Windows: irm …/install.ps1 | iex

curl -N "$BASE_URL/chat/completions" \
  -H "Authorization: Bearer $API_KEY" -H "Content-Type: application/json" \
  -d '{"model":"omni2api","messages":[{"role":"user","content":"hello"}],"stream":true}'

Anything can be the API.