Connections: Composio and host CLIs

The instance reaches third-party tools through **connections**. There is one Settings surface for both:

  1. Composio — hosted toolkits, OAuth in the browser.
  2. Host CLI — a paired doso-runtime on a machine that already has a CLI such as gws or imsg. Tokens and files stay on that host.

Product index: docs/product/00-index.md.

Composio#

  1. Open Settings → Connections.
  2. Provider Composio. Paste a project or ck_ consumer key and save.
  3. Search the toolkit catalog, connect an app, finish OAuth, then Check status.
  4. Enable the capabilities the workflow should see.

Host CLI (Desktop runtime)#

CLIs that need a keyring, browser consent, or Full Disk Access cannot run inside the API container. Pair a runtime instead.

  1. Install the CLI on the host (example: brew install googleworkspace-cli). Authenticate it with whatever that CLI documents (gws auth login, …).
  2. In Settings → Connections, create a pairing code under Desktop runtimes.
  3. On the host:
1doso-runtime pair --server http://127.0.0.1:8080 --code <code> --name "My computer"2doso-runtime serve
  1. Add a Host CLI connection, choose that runtime, Connect, then enable capabilities.

doso-runtime loads ~/.config/doso/runtime-manifest.json (or DOSO_RUNTIME_MANIFEST). If the file is missing it uses the built-in gws example. Copy crates/doso-runtime/runtime-manifest.example.json and add another clis[] entry to declare a different executable.

HTTP is allowed only for loopback pairing; hosted instances must use HTTPS.

Optional bulk ingest#

doso-sync is a host-side helper that execs those same CLIs and POSTs documents into /v1/content/documents. It is not a second product — it is ingest through the API.

1cargo run -p doso-sync -- gmail --since 7d2cargo run -p doso-sync -- calendar --days 303cargo run -p doso-sync -- imessage --since 7d
Entry pointAPI base URLCredential
doso-sync--api or DOSO_API--api-key or DOSO_API_KEY / a dsa_… service account
make sync-*API_URLinherited DOSO_API_KEY

On a JWKS instance, prefer a service-account token over a loopback skip.

Stable URIs (idempotent):

SourceURI
Gmailgmail://messages/{id}
Calendargcal://events/{calendarId}/{eventId}
iMessage DMimessage://messages/{guid}
iMessage groupimessage://chats/{id}/day/{YYYY-MM-DD}

gws and imsg appear here only as example CLIs, not as engine special cases.