Account, key, secret, team and template commands
Log in, manage profiles, mint and revoke API keys, store secrets, run a team and publish templates.
tangle auth login
tangle keys create ci-agents --budget-usd 25 --expires-in-days 30
printf %s "$OPENAI_API_KEY" | tangle secret create OPENAI_API_KEY --value-stdin
tangle team switch Acmekeys create and keys revoke need an API-key login (tangle auth login --api-key ... or TANGLE_API_KEY). A browser login cannot create or revoke keys.
keys talks to Tangle Platform; --platform-url names that host and --base-url still names the Sandbox API.
Commands on this page
| Command | What it does |
|---|---|
tangle auth login | Authenticate with browser login, device code, or an API key |
tangle auth logout | Remove stored credentials |
tangle auth status | Show current authentication status |
tangle auth profiles list | List configured profiles |
tangle auth profiles use | Set the active profile |
tangle auth profiles current | Show the active profile |
tangle keys list | List your active API keys |
tangle keys create | Create a new API key |
tangle keys revoke | Revoke an API key |
tangle secret create | Create a new secret |
tangle secret list | List all secrets |
tangle secret delete | Delete a secret |
tangle team list | List teams for the current account |
tangle team create | Create a team |
tangle team switch | Set the active team for the current profile |
tangle team current | Show the active team for the current profile |
tangle team clear | Clear the active team for the current profile |
tangle team members | List team members |
tangle team update-member | Update a team member role |
tangle team invite | Invite a user to a team |
tangle team leave | Leave a team as the current user |
tangle team transfer | Transfer team ownership to another active member |
tangle team secret list | List team secret names |
tangle team secret set | Create or replace a team secret |
tangle team secret delete | Delete a team secret |
tangle team secret reveal | Reveal a team secret value |
tangle team templates list | List a team’s golden-path templates |
tangle team templates create | Create a golden-path template from a snapshot |
tangle team templates delete | Delete a team golden-path template |
tangle team invitations | List pending and historical team invitations |
tangle team accept | Accept a team invitation |
tangle team revoke-invitation | Revoke a pending team invitation |
tangle team remove-member | Remove a member from a team |
tangle template list | |
tangle template get | |
tangle template versions | |
tangle template publish | |
tangle template publish-version | |
tangle environments list | List available environments |
tangle environments get | Get environment details |
Log in and profiles
tangle auth login
Authenticate with browser login, device code, or an API key.
Authenticates and stores a credential for a profile. Default: browser login through a 127.0.0.1 loopback callback; --no-browser: device code; global --api-key: validates the key against GET /v1/account/me and stores it.
tangle auth login [options]| Flag | Default | Description |
|---|---|---|
--no-browser | Use device-code login instead of opening a browser | |
--profile <name> | Profile name | |
--provider <provider> | Identity provider (github, google, microsoft) | |
--app <app> | sandbox | Product to authorize (sandbox or solve) |
Request: POST /auth/cli/exchange
tangle auth login- Browser flow: opens
<base-url>/auth/cli/login?callback_url=http://127.0.0.1:<port>/callback?state=<nonce>, waits up to 2 minutes, then POST /auth/cli/exchange. - Device flow: POST /auth/cli/device/start, then polls POST /auth/cli/device/poll at the server interval (default 5 s) for up to 15 minutes.
--appsolve always uses the device flow against the fixed platform host and also opens the prefilled URL unless--no-browser.- API keys must start with sk_ or sk-tan-; anything else exits 1 before any request.
- Before any interactive login it proves the credential store can write, read and delete a probe value; without an OS keychain it uses ~/.tangle/credentials.json (mode 0600).
- A sandbox login makes the profile active; a solve login does not.
- No JSON document is printed; success lines go to stdout (stderr under
--json).
tangle auth logout
Remove stored credentials.
Removes the profile’s stored credential from the OS keychain and the credentials file, keeping its base URL and team settings.
tangle auth logout [options]| Flag | Default | Description |
|---|---|---|
--profile <name> | Profile name | |
--app <app> | sandbox | Product credentials to remove (sandbox or solve) |
tangle auth logout- Local only; no network request.
tangle auth status
Show current authentication status.
Checks the stored or supplied credential against the sandbox API and probes the platform control plane with the same profile.
tangle auth status [options]| Flag | Default | Description |
|---|---|---|
--profile <name> | Profile name | |
--app <app> | sandbox | Product credentials to check (sandbox or solve) |
Request: GET /v1/account/me
tangle auth status--jsonprints{authenticated, profile, baseUrl, credentialSource, account, sandbox, platform}; missing credentials print{authenticated:false, reason:'missing_credentials'}and exit 0.- Exits 1 when the sandbox API or the platform refuses the credential; an unreachable platform still exits 0 and sets platform.reachable=false.
- credentialSource is one of flag, env, keychain, file.
tangle auth profiles list
List configured profiles.
Lists every profile with whether it is active, its base URL and where its credential lives.
tangle auth profiles listtangle auth profiles list--jsonprints an array of{name, active, hasApiKey, baseUrl, apiKeySource}.
tangle auth profiles use
Set the active profile.
Sets the active profile in ~/.tangle/config.json.
tangle auth profiles use <name>tangle auth profiles use staging- Profile names are lowercased and limited to a-z, 0-9, ’.’, ’_’ and ’-’.
tangle auth profiles current
Show the active profile.
Shows the active profile, its base URL and credential source.
tangle auth profiles currenttangle auth profiles current--jsonprints{name, active, baseUrl, credentialSource}.
API keys
tangle keys list
List your active API keys.
Lists your active platform API keys.
tangle keys list [options]| Flag | Default | Description |
|---|---|---|
--platform-url <url> | Override the platform URL (id.tangle.tools) |
Request: GET /v1/keys
tangle keys list- Works from a browser login: the CLI exchanges the stored session for a short-lived platform key.
--platform-urlnames the platform host; the global--base-urlnames the sandbox host the session is exchanged at.
tangle keys create
Create a new API key.
Creates a platform API key with optional product, budget, rate and expiry limits and prints the key once.
tangle keys create <name> [options]| Flag | Default | Description |
|---|---|---|
--product <product> | Restrict the key to one product (router|sandbox|blueprint-agent|evals|agent-builder). Omit for all products. | |
--budget-usd <amount> | Hard budget cap in USD | |
--rpm-limit <limit> | Requests-per-minute cap | |
--expires-in-days <days> | Expire the key after N days (integer) | |
--platform-url <url> | Override the platform URL (id.tangle.tools) |
Request: POST /v1/keys
tangle keys create ci-agents --budget-usd 25- Refused before any request when the credential was minted from a browser login; set TANGLE_API_KEY or log in with
--api-key.
tangle keys revoke
Revoke an API key.
Revokes a platform API key after confirmation.
tangle keys revoke <keyId> [options]| Flag | Default | Description |
|---|---|---|
--yes | Skip the confirmation prompt | |
--platform-url <url> | Override the platform URL (id.tangle.tools) |
Request: DELETE /v1/keys/{keyId}
tangle keys revoke key_1- Confirmation is skipped with
--yes(not--force). - Same minted-credential refusal as keys create.
Secrets
tangle secret create
Create a new secret.
Creates an account secret; the value comes from the argument, from stdin with --value-stdin, or from a hidden prompt.
tangle secret create <name> [value] [options]| Flag | Default | Description |
|---|---|---|
--value-stdin | Read secret value from stdin |
Request: POST /v1/secrets
tangle secret create API_KEY- With neither a value nor
--value-stdinit prompts on stderr with echo off: “Enter value for secret ‘<name>’: ”. - A value argument and
--value-stdintogether are refused; an empty value is refused. - Select the secret for a sandbox with
tangle sandbox create --secret <name>.
tangle secret list
List all secrets.
Lists secret names with created and updated times; values are never printed.
tangle secret listRequest: GET /v1/secrets
tangle secret listtangle secret delete
Delete a secret.
Deletes a secret after a y/N confirmation.
tangle secret delete <name> [options]| Flag | Default | Description |
|---|---|---|
--force | Skip confirmation prompt |
Request: DELETE /v1/secrets/{name}
tangle secret delete API_KEY--forceskips the prompt;--jsonprints{success:true, deleted:<name>}.
Teams
tangle team list
List teams for the current account.
tangle team list [options]| Flag | Default | Description |
|---|---|---|
--profile <profile> | Credential profile |
Request: GET /v1/teams
tangle team listtangle team create
Create a team.
Creates a team and makes it active unless --no-switch.
tangle team create <name> [options]| Flag | Default | Description |
|---|---|---|
--profile <profile> | Credential profile | |
--org-id <id> | External organization id | |
--no-switch | Do not set the new team as active |
Request: POST /v1/teams
tangle team create Acmetangle team switch
Set the active team for the current profile.
Sets the active team (by id or name) for the profile.
tangle team switch <team> [options]| Flag | Default | Description |
|---|---|---|
--profile <profile> | Credential profile |
Request: GET /v1/teams/{teamId}
tangle team switch Acmetangle team current
Show the active team for the current profile.
Shows the profile’s active team.
tangle team current [options]| Flag | Default | Description |
|---|---|---|
--profile <profile> | Credential profile |
tangle team currenttangle team clear
Clear the active team for the current profile.
Clears the profile’s active team.
tangle team clear [options]| Flag | Default | Description |
|---|---|---|
--profile <profile> | Credential profile |
tangle team cleartangle team members
List team members.
Lists members of a team (default: the active team).
tangle team members [team] [options]| Flag | Default | Description |
|---|---|---|
--profile <profile> | Credential profile |
Request: GET /v1/teams/{teamId}/members
tangle team memberstangle team update-member
Update a team member role.
Changes a member’s role to admin, member or viewer.
tangle team update-member <member-id> [options]| Flag | Default | Description |
|---|---|---|
--profile <profile> | Credential profile | |
-t, --team <team> | Team id or name (defaults to active team) | |
--role <role> | Role: admin, member, viewer. Required. |
Request: PATCH /v1/teams/{teamId}/members/{memberId}
tangle team update-member mem_1 --role viewer --jsontangle team invite
Invite a user to a team.
Invites an email address to a team with a role (default member).
tangle team invite <email> [options]| Flag | Default | Description |
|---|---|---|
--profile <profile> | Credential profile | |
-t, --team <team> | Team id or name (defaults to active team) | |
--role <role> | member | Role: admin, member, viewer |
--ttl-hours <hours> | Invitation lifetime in hours |
Request: POST /v1/teams/{teamId}/invitations
tangle team invite [email protected] --role membertangle team leave
Leave a team as the current user.
Leaves a team after confirmation.
tangle team leave [team] [options]| Flag | Default | Description |
|---|---|---|
--profile <profile> | Credential profile | |
--force | Skip confirmation prompt |
Request: POST /v1/teams/{teamId}/leave
tangle team leave- Skips the confirmation with
--forceor--json.
tangle team transfer
Transfer team ownership to another active member.
tangle team transfer <new-owner-customer-id> [team] [options]| Flag | Default | Description |
|---|---|---|
--profile <profile> | Credential profile | |
--force | Skip confirmation prompt |
Request: POST /v1/teams/{teamId}/transfer
tangle team transfer cust_123 --forcetangle team secret list
List team secret names.
Lists team secret names.
tangle team secret list [team] [options]| Flag | Default | Description |
|---|---|---|
--profile <profile> | Credential profile |
Request: GET /v1/teams/{teamId}/secrets
tangle team secret listtangle team secret set
Create or replace a team secret.
Creates or replaces a team secret from the argument or stdin.
tangle team secret set <name> [value] [options]| Flag | Default | Description |
|---|---|---|
--profile <profile> | Credential profile | |
-t, --team <team> | Team id or name (defaults to active team) | |
--value-stdin | Read secret value from stdin |
Request: PUT /v1/teams/{teamId}/secrets/{name}
tangle team secret set NPM_TOKENtangle team secret delete
Delete a team secret.
Deletes a team secret after confirmation.
tangle team secret delete <name> [options]| Flag | Default | Description |
|---|---|---|
--profile <profile> | Credential profile | |
-t, --team <team> | Team id or name (defaults to active team) | |
--force | Skip confirmation prompt |
Request: DELETE /v1/teams/{teamId}/secrets/{name}
tangle team secret delete NPM_TOKENtangle team secret reveal
Reveal a team secret value.
Prints a team secret’s value.
tangle team secret reveal <name> [options]| Flag | Default | Description |
|---|---|---|
--profile <profile> | Credential profile | |
-t, --team <team> | Team id or name (defaults to active team) |
Request: POST /v1/teams/{teamId}/secrets/{name}/reveal
tangle team secret reveal NPM_TOKENtangle team templates list
List a team’s golden-path templates.
Lists a team’s templates.
tangle team templates list [team] [options]| Flag | Default | Description |
|---|---|---|
--profile <profile> | Credential profile |
Request: GET /v1/teams/{teamId}/templates
tangle team templates listtangle team templates create
Create a golden-path template from a snapshot.
Creates a team template from a snapshot.
tangle team templates create <name> <snapshot-id> [options]| Flag | Default | Description |
|---|---|---|
--profile <profile> | Credential profile | |
-t, --team <team> | Team id or name (defaults to active team) | |
-d, --description <description> | Human-readable description shown in the dashboard | |
-e, --environment <environment> | Default environment to apply (defaults to ‘universal’) | |
--config <json> | Optional JSON config object merged into sandboxes created from this template |
Request: POST /v1/teams/{teamId}/templates
tangle team templates create Node snap_1tangle team templates delete
Delete a team golden-path template.
Deletes a team template after confirmation.
tangle team templates delete <template-id> [options]| Flag | Default | Description |
|---|---|---|
--profile <profile> | Credential profile | |
-t, --team <team> | Team id or name (defaults to active team) | |
--force | Skip confirmation prompt |
Request: DELETE /v1/teams/{teamId}/templates/{templateId}
tangle team templates delete tpl_1tangle team invitations
List pending and historical team invitations.
Lists pending and past invitations of a team.
tangle team invitations [team] [options]| Flag | Default | Description |
|---|---|---|
--profile <profile> | Credential profile |
Request: GET /v1/teams/{teamId}/invitations
tangle team invitationstangle team accept
Accept a team invitation.
Accepts an invitation token and makes the team active unless --no-switch.
tangle team accept <token> [options]| Flag | Default | Description |
|---|---|---|
--profile <profile> | Credential profile | |
--no-switch | Do not set the accepted team as active |
Request: POST /v1/teams/invitations/{token}/accept
tangle team accept invite-tokentangle team revoke-invitation
Revoke a pending team invitation.
Revokes a pending invitation.
tangle team revoke-invitation <invitation-id> [options]| Flag | Default | Description |
|---|---|---|
--profile <profile> | Credential profile |
Request: DELETE /v1/teams/invitations/{invitationId}
tangle team revoke-invitation inv_1tangle team remove-member
Remove a member from a team.
Removes a member from a team.
tangle team remove-member <member-id> [options]| Flag | Default | Description |
|---|---|---|
--profile <profile> | Credential profile | |
-t, --team <team> | Team id or name (defaults to active team) |
Request: DELETE /v1/teams/{teamId}/members/{memberId}
tangle team remove-member mem_1Templates
tangle template list
Lists public templates, filtered by --query or --tag, or only featured ones.
tangle template list [options]| Flag | Default | Description |
|---|---|---|
-q, --query <query> | Search query | |
--tag <tag> | Filter by tag | |
--featured | Show featured templates only |
Request: GET /v1/public-templates
tangle template list --featured--featuredcalls GET /v1/public-templates/featured.--jsonprints{templates:[...]}.
tangle template get
Shows one public template by id or slug.
tangle template get <id-or-slug>Request: GET /v1/public-templates/{idOrSlug}
tangle template get <id-or-slug>tangle template versions
Lists a public template’s versions.
tangle template versions <id-or-slug>Request: GET /v1/public-templates/{idOrSlug}/versions
tangle template versions <id-or-slug>tangle template publish
Publishes a snapshot of a sandbox as a new public template and waits for the publication job.
tangle template publish <name> <snapshot-id> <sandbox-id> [options]| Flag | Default | Description |
|---|---|---|
--timeout <seconds> | Maximum wait for publication | |
--resume-job <id> | Resume an accepted publication for this snapshot | |
--slug <slug> | Stable public slug | |
-d, --description <description> | Template description | |
--readme <markdown> | README markdown | |
--tags <tags...> | Template tags | |
--release-notes <text> | Release notes | |
--team-id <id> | Publish under a team | |
--forked-from <id> | Fork source template id |
Request: POST /v1/public-templates
tangle template publish <name> <snapshot-id> <sandbox-id>--timeoutis in SECONDS here.- Progress lines ‘Publication
<job>:<status>’ go to stderr; Ctrl-C stops waiting, and an interrupted or timed-out job prints the exact--resume-job <id>command to continue.
tangle template publish-version
Publishes a snapshot as a new version of an existing public template.
tangle template publish-version <id-or-slug> <snapshot-id> <sandbox-id> [options]| Flag | Default | Description |
|---|---|---|
--timeout <seconds> | Maximum wait for publication | |
--resume-job <id> | Resume an accepted publication for this snapshot | |
--readme <markdown> | README markdown | |
--tags <tags...> | Template tags | |
--release-notes <text> | Release notes |
Request: POST /v1/public-templates/{idOrSlug}/versions
tangle template publish-version <id-or-slug> <snapshot-id> <sandbox-id>--timeoutis in seconds; same resume behavior as template publish.
Environments
tangle environments list
List available environments.
Lists available environments.
tangle environments listAliases: ls
Request: GET /v1/environments
tangle environments list- Alias: ls.
tangle environments get
Get environment details.
Shows one environment’s details.
tangle environments get <id>Request: GET /v1/environments
tangle environments get universal- Fetches the list and selects the id client-side.