---
title: "Connect once. Keep secrets out of the lifecycle."
description: "Connect, inspect, test, override, and remove project-scoped BYOK sandbox-provider profiles without embedding credentials in application code."
canonical: "https://wildflower.computer/docs/provider-profiles/"
openapi_version: "0.8.0"
source_revision: "788b7325a454b8b753a7d614247d5694bad5c967"
---

# Connect once. Keep secrets out of the lifecycle.

A provider profile binds one provider credential and its non-secret connection context to the authenticated Wildflower project. Later lifecycle calls resolve that profile automatically.

## Connect a profile

The generated TypeScript CLI reads the provider credential from an environment variable. It never accepts the secret as a command argument or prints it in the returned profile.

```bash
export WILDFLOWER_URL="http://localhost:8080"
export WILDFLOWER_API_KEY="<your-wildflower-api-key>"
export E2B_API_KEY="<your-e2b-api-key>"

corepack pnpm build
node sdks/typescript/dist/cli.js provider connect e2b
node sdks/typescript/dist/cli.js provider test e2b
node sdks/typescript/dist/cli.js provider verify e2b
node sdks/typescript/dist/cli.js provider list
```

> **Safe test is intentionally narrow**
>
> `provider test` proves only that Wildflower can decrypt the stored profile and resolve its adapter. It makes no provider request. A newly connected profile remains `unverified` and reports provider authentication as`not_run`.

> **Deep verification creates a billable resource**
>
> `provider verify` creates a provider sandbox, gets it, executes an exact command, and deletes it. It can incur provider charges. The operation matrix is persisted: missing optional usage data degrades the profile without disabling verified lifecycle operations, while unproven cleanup marks it unsafe and blocks later creates.

## Use the HTTP control-plane route

Pipe JSON from `jq` so the provider secret does not enter shell history as a literal. The response contains redacted metadata, never the stored key.

```bash
jq -n --arg apiKey "$E2B_API_KEY" '{apiKey: $apiKey}' |
  curl -fsS "$WILDFLOWER_URL/v1/provider-profiles/e2b" \
    -H "Authorization: Bearer $WILDFLOWER_API_KEY" \
    -H "Content-Type: application/json" \
    --data-binary @-
```

## Provider-specific connection context

| Provider | Create fields | Connection fields |
| --- | --- | --- |
| [AWS AgentCore](https://wildflower.computer/docs/reference/providers/agentcore/) | timeout | bridgeUrl |
| [Blaxel](https://wildflower.computer/docs/reference/providers/blaxel/) | image, timeout | workspace |
| [ASCII Box](https://wildflower.computer/docs/reference/providers/box/) | timeout | None |
| [Cloudflare Sandbox](https://wildflower.computer/docs/reference/providers/cloudflare/) | None | bridgeUrl |
| [E2B](https://wildflower.computer/docs/reference/providers/e2b/) | image, timeout | None |
| [Novita Agent Sandbox](https://wildflower.computer/docs/reference/providers/novita/) | image, timeout | None |
| [Daytona](https://wildflower.computer/docs/reference/providers/daytona/) | image, timeout | None |
| [Modal](https://wildflower.computer/docs/reference/providers/modal/) | image, timeout | bridgeUrl |
| [Runloop](https://wildflower.computer/docs/reference/providers/runloop/) | image, timeout | None |
| [Smol Machines](https://wildflower.computer/docs/reference/providers/smol/) | image, timeout | None |
| [Fly.io Sprites](https://wildflower.computer/docs/reference/providers/sprites/) | None | None |
| [Vercel Sandbox](https://wildflower.computer/docs/reference/providers/vercel/) | image, timeout | teamId, projectId |

## Partial keys degrade by operation

Wildflower does not reject a useful lifecycle key merely because it lacks separate account-billing scope. A deep check records`create`, `get`, `exec`,`delete`, and optional `usage` independently. Once a requested operation is known to be failed or unavailable, Wildflower rejects it locally with a provider-neutral reason and remediation instead of redispatching a failure every time.

Successful deep-verification evidence expires after 24 hours. Reconnecting or disconnecting while a deep check is still running wins over that stale result. An ambiguous create or failed cleanup marks the profile`unsafe`, blocks future creates, and returns reconciliation details. During normal lifecycle use, authentication failure invalidates only the affected operation; temporary transport failures do not erase readiness evidence.

See [provider cost, usage, and benchmark coverage](https://wildflower.computer/docs/provider-observability/) for every provider’s current billing-signal gap.

## Storage boundaries

### Static local mode

Without `DATABASE_URL`, the deployment-wide Wildflower key identifies one in-memory project. Connected profiles disappear when the process restarts.

### PostgreSQL mode

Project keys identify durable projects. Provider credentials are encrypted with the stable `WILDFLOWER_PROVIDER_PROFILE_KEY`; responses expose only non-secret metadata.

### Inline override

A typed provider credential sent with one client remains ephemeral and overrides the connected profile for that request context.

### Disconnected profile

Removing a profile prevents fresh processes from resolving it. Existing provider sandboxes are not migrated or deleted automatically.

## Disconnect

```bash
node sdks/typescript/dist/cli.js provider disconnect e2b
```
