integrations

Manage integrations

Usage

integrations <subcommand> [args...]

Aliases

int

Subcommands

integrations list

List your integrations

Usage:

integrations list [--json [--usage]]

Options:

  • --json: output in JSON format
  • --usage: include per-VM usage (lastUsedAt, usedByVMs); JSON only

integrations setup

Set up a service integration

Usage:

integrations setup <type> [args...]

integrations setup github

Set up GitHub integration

Usage:

integrations setup github [--list|--verify|-d]

Options:

  • -d: disconnect GitHub account
  • --delete: disconnect GitHub account
  • --list: list connected GitHub accounts
  • --verify: verify GitHub connections are working

integrations setup chatgpt

Set up ChatGPT account access for LLM integrations

Usage:

integrations setup chatgpt [--name=<account-name>|--list|--verify|-d]

Options:

  • -d: disconnect ChatGPT account
  • --delete: disconnect ChatGPT account
  • --list: list connected ChatGPT accounts
  • --name: local ChatGPT account name (default chatgpt)
  • --verify: verify ChatGPT connections are working

integrations add

Add a new integration

Credential value flags (keys, tokens, passwords, bearer tokens, and webhook URLs) accept - to read from stdin.

Usage:

integrations add <type> --name=<name> [--team] [args...]

Options:

  • --act-as-user: authenticate as your GitHub user instead of the exe.dev app (github only); pushes and API calls are attributed to your GitHub account
  • --attach: attach to a spec (vm:, tag:, or auto:all); can be repeated
  • --bearer: bearer token (shorthand for --header="Authorization:Bearer TOKEN"; combines with --header)
  • --comment: optional free-form comment stored with the integration
  • --fields: comma-separated reflection fields to expose (email, integrations, tags, comment, default_port); 'all' exposes every field including ones added in the future; 'none' disables every field
  • --for: time-box every --attach to a duration from now (e.g. 2h, 45m); access lapses automatically
  • --header: header to inject (e.g. X-Auth:secret); can be repeated
  • --name: integration name (required)
  • --no-auth: create an endpoint integration with no injected authentication
  • --peer: authenticate with a generated API key scoped to the target VM; combines with --header/--bearer
  • --readonly: restrict the integration to read access (github only); git push and write API calls are rejected
  • --repository: GitHub repository in owner/repo format (required for github)
  • --strip-prefix: path prefix to strip from each request before forwarding (http-proxy only; e.g. /api/v3 makes /api/v3/users reach the target as /users)
  • --target: target URL (required for http-proxy)
  • --team: create as a team integration

integrations remove

Remove an integration

Usage:

integrations remove <name> [--team]

Options:

  • --team: operate on a team integration

integrations test

Test an integration's credential (connection check)

Usage:

integrations test <name> [--team]

Options:

  • --team: operate on a team integration

integrations edit

Edit an integration

Credential value flags (keys, tokens, passwords, bearer tokens, and webhook URLs) accept - to read from stdin.

Usage:

integrations edit <name> [--team] [args...]

Options:

  • --act-as-user: authenticate as your GitHub user instead of the exe.dev app (github only)
  • --bearer: bearer token (shorthand for --header="Authorization:Bearer TOKEN"; combines with --header)
  • --clear-header: remove injected headers for http-proxy
  • --comment: free-form comment stored with the integration
  • --fields: comma-separated reflection fields to expose (email, integrations, tags, comment, default_port); 'all' exposes every field including ones added in the future; 'none' disables every field
  • --header: header to inject for http-proxy; can be repeated; replaces all existing headers
  • --no-auth: remove injected authentication for http-proxy
  • --readonly: restrict the integration to read access (github only)
  • --repository: GitHub repository in owner/repo format
  • --strip-prefix: path prefix to strip from each request before forwarding (http-proxy only; e.g. /api/v3; empty clears it)
  • --target: target URL for http-proxy
  • --team: edit a team integration
  • --webhook-url: replacement Slack or Discord webhook URL

integrations attach

Attach an integration to a VM, tag, or all VMs

A controls where the integration is mounted: vm: attach to a specific VM (personal only) tag: attach to every VM with the given tag auto:all attach to all current and future VMs (personal only)

You can attach the same integration multiple times with different specs. Team integrations only support tag:.

A grant can be time-boxed with --for or --until ; when it lapses, access stops immediately, with nothing to revoke. Re-attaching the same spec with a new --for/--until extends or shortens it.

Usage:

integrations attach <name> <spec> [--team] [--for <duration> | --until <time>]

Options:

  • --for: time-box the attachment to a duration from now (e.g. 2h, 45m); access lapses automatically
  • --team: operate on a team integration
  • --until: time-box the attachment until an RFC3339 instant (e.g. 2026-08-03T20:00:00Z)

Examples:

int attach my-mcp vm:dev1
int attach my-mcp tag:production
int attach my-mcp auto:all
int attach shared-mcp tag:production
int attach gmail vm:dev1 --for 2h

integrations detach

Detach an integration from a VM, tag, or all VMs

Usage:

integrations detach <name> <spec> [--team]

Options:

  • --team: operate on a team integration

integrations rename

Rename an integration

Usage:

integrations rename <name> <new-name> [--team]

Options:

  • --team: operate on a team integration

integrations catalog

Browse the catalog of ready-made service integrations

Usage:

integrations catalog [service-or-search-term]

Examples:

int catalog
int catalog stripe