Steel wrapper
If you use Steel today, you get two surfaces. Agent tasks go to /api/wrappers/steel/tasks (Responses under the hood) and become Banana Peel runs — they default to routing: "smart", so pin routing: "steel" (or a fallback list) only if you want provider parity during migration. Sessions — live browsers you hold open and drive yourself — go through an optional reverse-proxy at /api/wrappers/steel/v1/sessions (available when STEEL_API_KEY is configured on the deployment) and always run on a real Steel browser. See Runs vs. sessions.
Why wrap vs call Responses directly
Use the Steel wrapper when you already have Steel client code and want the smallest diff: same method names / request shapes, Banana Peel key + base URL, optional routing. Use POST /api/v1/responses for new work — one API for smart routing, benchmarks, MFA input, and run inspection. Wrappers are a migration bridge, not the long-term product surface.
Install
- In-repo:
npm install ./packages/wrappers/steel→@bananapeel/steel - Or keep
steel-sdkfor sessions only — setbaseURLto${BANANA_PEEL_BASE}/api/wrappers/steelandsteelAPIKeyto yourbp_live_…key
Before → after
import Steel from "steel-sdk";
const client = new Steel({
steelAPIKey: process.env.STEEL_API_KEY,
});
// Official Steel is session-first (CDP). Agent tasks vary by product surface.
const session = await client.sessions.create({ useProxy: true });
console.log(session.websocketUrl);Auth & base URL
Agents: npx -y @banana-peel/cli init --agent --json (see /docs/agents). Humans who already have an account can copy a key from the keys console: bp_live_… (or bp_test_…).
- Env:
BANANA_PEEL_API_KEY, optionalBANANA_PEEL_BASE(defaults to the production Cloud Run URL) - Headers:
Authorization: Bearer …,x-api-key, or vendor-shapedsteel-api-key,x-steel-api-key - HTTP base for this wrapper:
${BANANA_PEEL_BASE}/api/wrappers/steel
API mapping
| Steel / client | Banana Peel |
|---|---|
| tasks.create | POST /api/wrappers/steel/tasks |
| tasks.retrieve | GET /api/wrappers/steel/tasks/:id |
| sessions.create (steel-sdk) | POST /api/wrappers/steel/v1/sessions |
| task / prompt / goal | Mapped to Responses input |
| status / output | Vendor-shaped fields + banana_peel (runner, cost, artifacts) |
Limits / gaps
- Not a full
steel-sdkreimplementation (files, captchas, computer actions, context APIs). - Sessions proxy returns 503 if
STEEL_API_KEYis missing on the Banana Peel deployment — tasks still work without it. - Steel-native agent product surfaces beyond this task shape are not emulated.
See also
- Wrappers overview
- OpenAI-compatible Responses API (
POST /api/v1/responses) - Quickstart
- MCP server
- Migrating providers