alien-bindings
Platform-agnostic binding abstractions for Alien applications. Defines traits for storage, KV, vault, queue, build, container, function, artifact registry, and service accounts, with per-platform provider implementations.
Architecture
traits.rs— Binding trait definitions (Storage,Kv,Vault,Queue,Build, etc.)provider.rs—BindingsProvider: holds all binding instances for a deployment, keyed by namebindings.rs—Bindings: app-facing entry point overBindingsProvider(storage,kv,queue,vault)providers/— Platform-specific implementations (AWS, GCP, Azure, Local, etc.)
Feature Flags
openapi— OpenAPI schema generation- Platform features:
aws,gcp,azure,kubernetes,local,test
Usage
use Bindings;
use Path;
let bindings = from_env?;
let storage = bindings.storage.await?;
storage.put.await?;
With the platform-sdk feature, trusted backend code can open the hosted
remote Storage surface through the deployment's assigned manager:
use RemoteBindings;
let bindings = for_deployment
.await?;
let storage = bindings.storage.await?;
Remote v0 supports only Running, Frozen S3, GCS, and Azure Blob Storage resources with remote access enabled. The API token and returned provider credentials are backend secrets. Remote access grants the deployment management identity exact object read, write, list, delete, and multipart permissions on the selected bucket or container; it does not create a separate identity per resource.
This replaces the former unscoped /v1/resolve-credentials flow. The dedicated
RemoteBindings type exposes only Storage; its handles refresh credentials and
rediscover manager assignment without exposing a non-refreshing provider.
Adding New Providers
- Create a new module under
src/providers/implementingBindingsProvider - Add feature flag in
Cargo.toml - Update
get_platform_provider()inlib.rs
Adding New Binding Types
- Define the trait in
src/traits.rs - Add method to
BindingsProvider - Implement for each provider