Getting Started
Move from mocks to live
Keep canonical code unchanged while replacing deterministic fixtures with connected provider accounts.
Your tool names and inputs should not change when you move live.
| Concern | Mock environment | Live environment |
|---|---|---|
baseUrl | Mock-backed executor | Hosted or self-hosted executor |
| Project key | Test project key | Environment-scoped project key |
| Account | Deterministic fixture selected by userId | Provider connection owned by the same external user |
| Time | Frozen and controllable | Wall-clock time |
| Failures | Trigger tokens | Real normalized provider failures |
ts
import { Eyeball } from "@eyeball/sdk";
const eyeball = new Eyeball({
apiKey: process.env.EYEBALL_API_KEY!,
baseUrl: process.env.EYEBALL_EXECUTOR_URL!,
});
const output = await eyeball.tools.run(
"gmail.search_emails",
{ query: "reservation", pageSize: 10 },
{ userId: "user_42" },
);
console.log(output);Only configuration and connected-account state differ. On a self-hosted executor, supply live credentials with EYEBALL_CREDENTIALS=env or local-vault on the stock server — see Connect real providers. Before enabling mutations, replay the same scenario against mocks, preserve idempotency keys across retries, and verify the provider scopes listed in the generated toolkit page.
Next: connect an account.