Guides / provider access
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.
export WILDFLOWER_URL="http://localhost:8080"export WILDFLOWER_API_KEY="<your-wildflower-api-key>"export E2B_API_KEY="<your-e2b-api-key>"corepack pnpm buildnode sdks/typescript/dist/cli.js provider connect e2bnode sdks/typescript/dist/cli.js provider test e2bnode sdks/typescript/dist/cli.js provider verify e2bnode sdks/typescript/dist/cli.js provider listprovider 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 asnot_run.
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.
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 | timeout | bridgeUrl |
| Blaxel | image, timeout | workspace |
| ASCII Box | timeout | None |
| Cloudflare Sandbox | None | bridgeUrl |
| E2B | image, timeout | None |
| Novita Agent Sandbox | image, timeout | None |
| Daytona | image, timeout | None |
| Modal | image, timeout | bridgeUrl |
| Runloop | image, timeout | None |
| Smol Machines | image, timeout | None |
| Fly.io Sprites | None | None |
| Vercel Sandbox | 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 recordscreate, 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 profileunsafe, 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 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
node sdks/typescript/dist/cli.js provider disconnect e2b