Skip to content

Getting Started

  • Bun (recommended) or Node.js 20+
  • A Cloudflare account with an API token
Terminal window
mkdir my-app && cd my-app && bun init -y
Terminal window
bun add alchemy@2.0.0-beta.3 effect@4.0.0-beta.48 @effect/platform-bun@4.0.0-beta.48

Every Alchemy program starts with a Stack — create alchemy.run.ts:

alchemy.run.ts
import * as Alchemy from "alchemy";
import * as Cloudflare from "alchemy/Cloudflare";
import * as Effect from "effect/Effect";
export default Alchemy.Stack(
"MyApp",
{
providers: Cloudflare.providers(),
},
Effect.gen(function* () {
const bucket = yield* Cloudflare.R2Bucket("Bucket");
return {
bucketName: bucket.bucketName,
};
}),
);
Terminal window
alchemy deploy
Plan: 1 to create
+ Bucket (Cloudflare.R2Bucket)

Proceed?
◉ Yes ○ No
 Bucket (Cloudflare.R2Bucket) created
{
  bucketName: "myapp-bucket-a1b2c3d4e5",
}

That’s it — you have a live R2 Bucket on Cloudflare.