Build a provider integration
An adapter connects a provider’s native API to Beachside. Install @beachside/adapter from npm to build and test it.
If your agent supports skills, install the add-provider skill in the adapter’s repository instead; it carries the same guidance and loads when the agent needs it:
npx skills add pandemicsyn/beachside --skill add-providerOtherwise, replace the bracketed fields and copy this prompt into an agent with access to the integration repository.
Implement a Beachside adapter for [provider] in [repository or package].The requested operations are [create, destroy, inspect, exec, files, etc.].Distribution: [a separately installed official or third-party adapter package].
Read the current Beachside authoring docs and tested examples:- https://beachside.run/docs/guides/write-an-adapter/- https://beachside.run/docs/guides/adapter-capabilities/- https://beachside.run/docs/guides/adapter-recovery/- https://beachside.run/docs/contributing/drivers/- https://github.com/pandemicsyn/beachside/tree/main/apps/docs/examples
If working in the Beachside repository, follow AGENTS.md and the.agents/skills/add-provider/SKILL.md workflow. Use current exported typesand tests as the implementation authority, not archived proposals.
Inspect the provider's official API documentation and the exact nativeSDK version. Implement defineAdapter from "@beachside/adapter". Keep theadapter independent of Beachside internals. Separate configuration fromcredentials, verify native identity with authenticated read-only IO,and include identity-relevant routing partitions in the returned scope.
Implement create and destroy, then add only capabilities backed by nativeguarantees. Disable hidden mutation retries. Preserve argv, binary bytes,output bounds, and atomic no-clobber semantics where advertised. Confirmcompute termination before reporting success. Release owned clients onclose without implying that close destroys compute.
When snapshot capture is in scope, follow the current state-portabilityspec at https://github.com/pandemicsyn/beachside/blob/main/specs/provider-state-portability.md:no-argument snapshot() uses sensible native defaults, with requiredlifecycle orchestration owned by the adapter. Expose options only for realchoices. Document each provider's capture scope, memory inclusion, sourceprocess/connection effects, restore behavior, options, and partial failures.Report actual guarantees; reject unsupported strict requirements beforeeffects. Do not emulate snapshots with archives or invent native choices.
For asynchronous work, use read-only prepare, one submit, and read-onlyobserve with versioned recovery tokens. A lost response is not proof offailure. Recovery must never replay a mutation. Keep secrets and nativelogs out of public errors, tokens, and committed evidence.
Build an injectable native boundary and deterministic tests. RunadapterSuite from "@beachside/adapter/testing" and verify actual outboundattempt counts, scope separation, binary fidelity, uncertain outcomes,cleanup, and supported recovery. Qualify packed artifacts with an externalTypeScript consumer and the supported runtimes.
Document configuration, credentials, image/network requirements,capabilities, and limitations. Distinguish fixture tests, package tests,and live evidence in the provider support matrix. Get explicit approvalfor a bounded live test and owned-resource cleanup before using paidresources. Do not publish the package without authorization.
Finish with the implementation, usage example, validation results,and a precise list of unsupported or untested behavior.For a separately distributed adapter, consumers install its package alongside beachside and pass the exported definition to Beachside.connect({ adapter, config, credentials }). Official adapters use the same public contract with convenience factories imported from their separately installed packages.