Skip to content
Closed
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
28 changes: 28 additions & 0 deletions docs/gemini.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,34 @@ helm install openab openab/openab \

> Set `agents.kiro.enabled=false` to disable the default Kiro agent.

## First-Run Workaround

Gemini CLI needs `~/.gemini/projects.json` to exist before the first ACP session starts. In ephemeral containers, the file may not be created yet, which can surface as `ENOENT` or `Unexpected end of JSON input` during the first run.

This is a workaround for the upstream Gemini CLI issue `google-gemini/gemini-cli#22583`.

If you control the container startup command, seed the directory before launching `openab`:

```bash
mkdir -p /home/node/.gemini && echo '{}' > /home/node/.gemini/projects.json && exec openab /etc/openab/config.toml
```

The `exec openab /etc/openab/config.toml` part assumes the Docker image default config path.

For Kubernetes or Helm deployments, use the same idea with an init container and a shared volume mounted at `/home/node/.gemini`. A minimal pattern looks like this:

```yaml
extraInitContainers:
- name: seed-gemini-home
image: busybox:1.36
command: ["sh", "-c", "mkdir -p /home/node/.gemini && echo '{}' > /home/node/.gemini/projects.json"]
volumeMounts:
- name: gemini-home
mountPath: /home/node/.gemini
```

The current chart does not expose `extraInitContainers`, `extraVolumes`, or `extraVolumeMounts`, so the workaround is easiest to apply in a custom manifest or wrapper image until those values are added. Chart support for those passthrough fields is tracked in #344.

## Manual config.toml

```toml
Expand Down
Loading