Skip to content

Hyperdrive

Cloudflare Hyperdrive provides serverless, globally distributed PostgreSQL connection pooling and caching.

Minimal Example

Create a basic Hyperdrive connection to a PostgreSQL database.

ts
import { Hyperdrive } from "alchemy/cloudflare";

const basicHyperdrive = await Hyperdrive("my-postgres-db", {
  name: "my-postgres-db", 
  origin: {
    database: "postgres",
    host: "database.example.com",
    password: alchemy.secret("your-password"),
    port: 5432,
    user: "postgres"
  }
});

With Caching Disabled

Create a Hyperdrive connection with caching disabled.

ts
const noCacheHyperdrive = await Hyperdrive("no-cache-db", {
  name: "no-cache-db",
  origin: {
    database: "postgres",
    host: "database.example.com", 
    password: alchemy.secret(process.env.DB_PASSWORD),
    port: 5432,
    user: "postgres"
  },
  caching: {
    disabled: true
  }
});

With mTLS Configuration

Create a Hyperdrive connection with mTLS security.

ts
const mtlsHyperdrive = await Hyperdrive("secure-db", {
  name: "secure-db",
  origin: {
    database: "postgres",
    host: "database.example.com",
    password: alchemy.secret(process.env.DB_PASSWORD),
    port: 5432,
    user: "postgres"
  },
  mtls: {
    ca_certificate_id: "00000000-0000-0000-0000-0000000000",
    mtls_certificate_id: "00000000-0000-0000-0000-0000000000",
    sslmode: "verify-full"
  }
});

With Access Client Credentials

Create a Hyperdrive connection using access client credentials.

ts
const accessHyperdrive = await Hyperdrive("access-db", {
  name: "access-db",
  origin: {
    database: "postgres",
    host: "database.example.com",
    access_client_id: "client-id",
    access_client_secret: alchemy.secret(process.env.ACCESS_CLIENT_SECRET),
    port: 5432,
    user: "postgres"
  }
});

Bind to a Worker

ts
import { Worker, Hyperdrive } from "alchemy/cloudflare";

const myHyperdrive = await Hyperdrive("my-hyperdrive", {
  name: "my-hyperdrive",
  origin: {
    database: "postgres",
    host: "database.example.com",
    password: alchemy.secret("your-password"),
    port: 5432,
    user: "postgres"
  }
});

await Worker("my-worker", {
  name: "my-worker",
  script: "console.log('Hello, world!')",
  bindings: {
    DB: myHyperdrive
  }
});