# ollie-httpgw HTTP gateway for ollie. Translates REST requests to D-Bus calls against `org.ollie.SessionManager`, allowing any HTTP client to manage sessions without a D-Bus library. Also serves as the backend for the web UI. ## Building ```sh mk ``` Installs `ollie-httpgw` to `$HOME/bin`. ## Usage ```sh ollie-httpgw start # start daemon (backgrounds itself) ollie-httpgw fgstart # start in foreground ollie-httpgw stop # stop daemon ollie-httpgw status # check if running ``` The gateway listens on `:8011` by default. Override with `-listen`: ```sh ollie-httpgw start -listen :9090 ``` Requires either `olliesrv` or `ollie-dbus` running (provides the D-Bus service). ## API All responses are JSON. An OpenAPI spec is served at `GET /openapi.json`. ### Sessions | Method | Path | Action | |--------|------|--------| | `GET` | `/sessions` | List all sessions | | `POST` | `/sessions` | Create a session (body: `{cwd, backend, model, agent}`) | | `GET` | `/sessions/{id}` | Get session info | | `DELETE` | `/sessions/{id}` | Kill a session | | `PATCH` | `/sessions/{id}` | Rename a session (body: `{name}`) | ### Interaction | Method | Path | Action | |--------|------|--------| | `POST` | `/sessions/{id}/submit` | Submit a prompt (body: `{prompt}`) | | `POST` | `/sessions/{id}/interrupt` | Interrupt the current turn | ### State queries | Method | Path | Action | |--------|------|--------| | `GET` | `/sessions/{id}/state` | Get session state | | `GET` | `/sessions/{id}/chat?offset=N` | Get chat text from offset | | `GET` | `/sessions/{id}/usage` | Get token usage | | `GET` | `/sessions/{id}/cost` | Get cost | | `GET` | `/sessions/{id}/config` | Get config | | `POST` | `/sessions/{id}/config` | Set config (body: `{key, value}`) | | `GET` | `/sessions/{id}/context` | Get message history (JSONL) | | `GET` | `/sessions/{id}/models` | List models for session's backend | ### Peers | Method | Path | Action | |--------|------|--------| | `GET` | `/sessions/{id}/peers` | List peers | | `POST` | `/sessions/{id}/peers` | Add peer (body: `{peer_id}`) | | `DELETE` | `/sessions/{id}/peers/{peer_id}` | Remove peer | | `POST` | `/sessions/{id}/peers/{peer_id}/submit` | Submit to peer (body: `{prompt}`) | ### Enumeration | Method | Path | Action | |--------|------|--------| | `GET` | `/backends` | List available backends | | `GET` | `/agents` | List available agents | ## Example ```sh # Create a session curl -X POST http://localhost:8011/sessions \ -d '{"cwd": "/home/user/project", "agent": "default"}' # Submit a prompt curl -X POST http://localhost:8011/sessions//submit \ -d '{"prompt": "list files in cwd"}' # Poll chat curl http://localhost:8011/sessions//chat?offset=0 ```