Remote bindings
Remote bindings let your hosted backend read and write a resource that lives in the customer's cloud. Until now, using a customer-owned bucket or key meant running your code next to it. Now you can publish one resource and reach it from the backend you already operate.
Publish the resource in the stack:
const uploads = new alien.Storage("uploads").build()
export default new alien.Stack("customer-storage")
.add(uploads, "frozen", { remoteAccess: true })
.build()remoteAccess: true publishes that one resource. Nothing else in the stack
becomes reachable.
Then resolve the customer from your backend by the same external ID you used when you created their setup link:
import { Bindings } from "@alienplatform/bindings"
const bindings = await Bindings.forRemoteCustomer({
project: "my-project",
externalId: customer.id,
token: process.env.ALIEN_API_TOKEN!,
})
const uploads = bindings.storage("uploads")
await uploads.put("report.txt", Buffer.from("hello"))Storage, Key, and AI are the resources you can publish today. Credentials are minted per call and scoped to the deployment, so nothing long-lived sits in your environment.
- One resource, not the stack:
remoteAccessis per resource and off by default - No deployment required: your backend stays where it is
- Short-lived, deployment-scoped credentials: minted behind the handle, never handed to you
The request still crosses environments. Review what you send and receive exactly as you would for any hosted API integration.