# Senpi (OmO Native)

Source: https://docs.aicentos.com/en/clients/senpi

Language: en

> Connect aicentos in Senpi / OmO — where the config directory and the openai-compatible provider live

Senpi is a fork of `pi-mono`, published on npm as `@code-yeongyu/senpi`, with the executable named `senpi`. It is also the runtime for oh-my-openagent (OmO for short), so OmO Native refers to the setup running on the senpi harness.

## Prerequisites

```bash
curl -fsSL https://get.omo.dev/install.sh | bash
omo
```

bun works too:

```bash
bun add -g omo-ai
```

The project describes itself as experimental; the official wording is not to bet it on a production pipeline.

## Configuration to fill in

The configuration directory is `~/.omo/agent/`, which `OMO_CODING_AGENT_DIR` can override; the old `SENPI_*` variables are still accepted.

| File            | Purpose                                               |
| --------------- | ----------------------------------------------------- |
| `models.json`   | provider definitions (endpoint, protocol, model list) |
| `auth.json`     | keys                                                  |
| `settings.json` | preferences such as the default model                 |

senpi itself has a separate set: `~/.senpi/agent/settings.json`, plus a project-level `.senpi/settings.json`.

| Field             | Value                                              |
| ----------------- | -------------------------------------------------- |
| Provider protocol | `@ai-sdk/openai-compatible`                        |
| Base URL          | `https://aicentos.com/v1`                          |
| API Key           | The key created in the console                     |
| Model             | A model name from the Model Gallery in the console |

## Setup steps

Add a provider in `~/.omo/agent/models.json` and choose the OpenAI-compatible protocol family (the mapping the docs give is `npm: @ai-sdk/openai-compatible`):

```json
{
  "providers": {
    "aicentos": {
      "npm": "@ai-sdk/openai-compatible",
      "options": {
        "baseURL": "https://aicentos.com/v1",
        "apiKey": "sk-your-API-Key"
      },
      "models": {
        "your-model-name": {}
      }
    }
  }
}
```

The key can also live separately in `auth.json` instead of `models.json`. Then write the default model into `settings.json`.

## Test

Start `omo` or `senpi`, confirm the models under `aicentos` appear in the model picker, and send one line to confirm it returns.

## Notes

* Do not mix up the two configuration directories: the OmO side is `~/.omo/agent/` and the senpi side is `~/.senpi/agent/`; changes in the wrong place have no effect.
* A project-level `.senpi/settings.json` overrides the global settings, so when troubleshooting, check the project directory first.
* The official docs only give the migration mapping, not a complete literal configuration snippet; the structure above follows Pi-family conventions, so check the field names against the current version at `omo.dev/docs`.
* It is an experimental project, so the configuration structure may change after an upgrade.

## Related links

* [OmO docs](https://omo.dev/docs)
* [senpi repository](https://github.com/code-yeongyu/senpi)
* [oh-my-openagent repository](https://github.com/code-yeongyu/oh-my-openagent)