All twins

Service twin · API only

Google Workspace

Test agents across Google People, Workspace Events, Apps Script, and Pub/Sub without calling production APIs.

API onlydocs-transcribedREST · MCP · CLI
Terminal
$ uv tool install blobfish-cli
$ blobfish twin login
$ blobfish twin-runs create --twins googleworkspace --ttl 60 --wait

What’s inside

A deterministic, seeded, resettable replica: every operation below executes real state transitions against the twin’s own SQLite state — reads are hash-invariant, writes produce inspectable diffs, and reset restores the seed baseline.

Operations34
Reads14
Writes20
Entities7
Lifecycles1

Seeded entities

EntityTableFieldsAbout
contactcontacts8People API person record with its primary contact-group membership.
contact_groupcontact_groups6People API contactGroup used to segment the contact list.
event_subscriptionevent_subscriptions7Workspace Events subscription that streams events for one target resource to a Pub/Sub topic.
script_projectscript_projects6Apps Script project as returned by script.googleapis.com projects.get.
script_deploymentscript_deployments7Versioned deployment of an Apps Script project (web app, API executable, or add-on).
topictopics6Pub/Sub topic that fans event messages out to subscriptions.
pubsub_subscriptionpubsub_subscriptions7Pub/Sub subscription that delivers a topic's messages to a worker or push endpoint.

Guarded lifecycles

These state machines are enforced, not decorative: an action whose fromstate doesn’t match is rejected the way the production service rejects it.

event_subscription.state

active → suspended → deleted
  • suspend: active suspended
  • reactivate: suspended active
  • delete: active|suspended deleted

Three surfaces, one state

Mount Google Workspace in a twin environment and the same seeded state serves vendor-shaped REST operations, an MCP endpoint for tool calling, and a generated bf-twin CLI — with copy-on-write sessions per rollout and a one-call reset to the seed baseline. Prefer raw HTTP? The same create works with curl:

API
$ curl -sS -X POST https://blobfish.ai/api/v1/twin/environments \
    -H "X-API-Key: $BLOBFISH_API_KEY" -H "Content-Type: application/json" \
    -d '{"services":["googleworkspace"],"ttl_minutes":60}'

Known limitations