Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions docs/antigravity.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,3 +75,28 @@ agents:

- **No streaming**: `agy -p` returns the full response at once; the adapter sends it as a single `agent_message_chunk` notification.
- **Cancel is a no-op**: `agy -p` runs to completion; `session/cancel` acknowledges but cannot interrupt.

## Model Selection

The Discord `/models` dropdown is supported. `agy-acp` returns model
`configOptions` when a session is created or loaded. It fetches the available
models from `agy models` and caches a successful result. If the live fetch fails,
the adapter uses the cache and then falls back to this static list when no cache
is available:

- Gemini 3.5 Flash (Medium)
- Gemini 3.5 Flash (High)
- Gemini 3.5 Flash (Low)
- Gemini 3.1 Pro (Low)
- Gemini 3.1 Pro (High)

When a user selects a model with `/models`, OpenAB sends
`session/set_config_option`. `agy-acp` stores the selected model for that session
and adds `--model <model_id>` to subsequent `agy` invocations.

To select a default model for every new session, set `default_config_options`:

```toml
[pool]
default_config_options = { model = "Gemini 3.5 Flash (Medium)" }
```
4 changes: 3 additions & 1 deletion docs/devin.md
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,9 @@ default_config_options = { model = "swe-1-6" }

Available model values include: `adaptive`, `swe-1-6`, `swe-1-6-fast`, `claude-opus-4-8-medium`,
`glm-5-2`, `gpt-5-5-medium`, `kimi-k2-7`, and many more. The full list is reported by the
agent at session creation and visible via the Discord `/model` slash command.
agent as ACP `configOptions` at session creation, making it available in the Discord `/models`
dropdown once a session is active. This behavior is based on ACP client evidence; a live OpenAB
session capture is still pending.

> **Note:** The `--model` flag and `DEVIN_MODEL` env var are **ignored** in ACP mode.
> Use `default_config_options` instead.
Expand Down
18 changes: 15 additions & 3 deletions docs/gemini.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,13 @@

Gemini CLI supports ACP natively via the `--acp` flag — no adapter needed.

> **Migration notice:** Since June 18, 2026, Gemini CLI no longer serves Google AI
> Pro, Google AI Ultra, or free-tier individual accounts. Google recommends
> migrating those users to Antigravity CLI. Enterprise users with Gemini Code
> Assist licenses and API-key authentication remain supported. See Google's
> [transition announcement](https://github.com/google-gemini/gemini-cli/discussions/27274)
> and [June 18 update](https://github.com/google-gemini/gemini-cli/discussions/28017).

## Docker Image

```bash
Expand Down Expand Up @@ -58,7 +65,12 @@ env = { GEMINI_API_KEY = "${GEMINI_API_KEY}" }

## Authentication

Gemini supports Google OAuth or an API key:
Gemini CLI authentication depends on the account type:

- **API key**: Set `GEMINI_API_KEY` environment variable
- **OAuth**: Run Google OAuth flow inside the pod
- **API key**: Set the `GEMINI_API_KEY` environment variable.
- **Enterprise or Google Cloud OAuth**: Run the Google OAuth flow inside the pod
using an organizational account with supported Gemini Code Assist or Google
Cloud access.
- **Individual OAuth**: Google AI Pro, Google AI Ultra, and free-tier individual
accounts are no longer served by Gemini CLI. Migrate these users to
Antigravity CLI.
10 changes: 7 additions & 3 deletions docs/slack.md
Original file line number Diff line number Diff line change
Expand Up @@ -114,15 +114,19 @@ The bot will reply in a thread. After that, just type in the thread — no @ment

openab supports `/models`, `/agents`, and `/cancel` on **Discord**, but **not on Slack**. If you previously configured these commands in your Slack app's **Slash Commands** page, you can safely delete them — the Slack adapter ignores both `slash_commands` and `interactive` envelope types.

The root cause is a combination of three Slack-specific platform constraints, none of which is fixable from openab's side:
The root cause is a combination of two Slack-specific platform constraints, neither of which is fixable from openab's side:

1. **Slack blocks third-party slash commands inside threads.** Invoking `/models` from a thread's reply composer returns the Slack error `"/models is not supported in threads. Sorry!"`. This is enforced by the Slack client itself, not by any app setting — enabling Interactivity, Socket Mode, or reinstalling the app does not bypass it. Slack's built-in commands (`/remind`, `/shrug`, etc.) get special treatment that custom apps cannot.

2. **Channel-level slash command payloads have no thread context.** If the user types `/models` in the channel's main composer instead of a thread, Slack delivers the command but the payload carries no `thread_ts`. Since openab keys each ACP session by thread (`slack:<thread_ts>` or `slack:<trigger_ts>`), the command cannot be routed to the right session. Sessions are never keyed by `channel_id` alone, so there's no workaround on the adapter side.

3. **Most ACP agents don't expose a model-switch surface.** Even when routing succeeded, `/models` reads the session's `configOptions` from the ACP `initialize` response. Only `kiro-cli` emits these in the expected format (via its `models`/`modes` fallback). `claude-code`, `codex`, `gemini`, `cursor-agent`, and `opencode` do not, so the menu would be empty for those backends — the user would see `"⚠️ No model options available"` with no recourse.
Backend model-selection support also varies; see the current
[slash-command compatibility table](slash-commands.md#models-and-agents). This
does not change Slack support: the two routing constraints above prevent the
menu from reaching the correct session even when a backend emits model
`configOptions`.

On Discord, none of these apply: slash commands work in thread-channels, the channel ID *is* the thread key, and users typically stay within a single agent per deployment anyway.
On Discord, neither constraint applies: slash commands work in thread-channels, the channel ID *is* the thread key, and users typically stay within a single agent per deployment anyway.

### If you need to switch models or agents with a Slack deployment

Expand Down
5 changes: 4 additions & 1 deletion docs/slash-commands.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,10 @@ When the user picks an option, OpenAB sends `session/set_config_option` to the A
| kiro-cli | ✅ Returns available models via `models` fallback | ✅ Returns modes (`kiro_default`, `kiro_planner`) via `modes` fallback |
| claude-code | ❌ No `configOptions` emitted | ❌ |
| codex | ❌ | ❌ |
| gemini | ❌ | ❌ |
| gemini | ❌ No `configOptions` emitted; see [Gemini CLI account migration guidance](gemini.md) | ❌ |
| antigravity | ✅ Returns available models via `configOptions`; `agy-acp` fetches them from `agy models`, with cache and static fallback | ❌ |
Comment thread
chaodu-obk[bot] marked this conversation as resolved.
| opencode | ✅ Emits model `configOptions` at session creation in OpenCode 1.17.9 (source-confirmed; live OpenAB session capture pending) | ❌ |
Comment thread
chaodu-obk[bot] marked this conversation as resolved.
| devin | ✅ Emits model `configOptions` at session creation (ACP client evidence; live OpenAB session capture pending) | ❌ |
| cursor-agent | ❌ (tracking: #493) | ❌ |
| copilot | ❌ (tracking: #496) | ❌ |

Expand Down
Loading