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
You can attach the same integration multiple times with different specs.
Team integrations only support tag:
A grant can be time-boxed with --for
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