Skip to content

Octane

Source: src/AWS/Website/Octane.ts

Deploy an OctaneJS application to AWS: Octane’s SSR server on a streaming Lambda Function URL, static assets in S3, and a CloudFront distribution whose edge router serves uploaded files from S3 and forwards everything else to the server.

The build runs through @alchemy.run/frontend-frameworks/octane with the @alchemy.run/frontend-frameworks/octane/aws deploy target — the project’s own vite build (with @octanejs/vite-plugin) produces the self-contained node server bundle, and the target’s finishing pass wraps its fetch handler as a streaming Lambda handler. The project’s octane.config.ts must select the AWS marker adapter:

import { aws } from "@alchemy.run/frontend-frameworks/octane/aws-adapter";
import { defineConfig } from "@octanejs/vite-plugin";
export default defineConfig({
adapter: aws(),
// ...
});

Basic Octane App

const site = yield* AWS.Website.Octane("Web", {
rootDir: "./app",
});

Custom Domain

const site = yield* AWS.Website.Octane("Web", {
rootDir: "./app",
domain: {
name: "app.example.com",
hostedZoneId: zone.hostedZoneId,
},
});
const site = yield* AWS.Website.Octane("Web", {
rootDir: "./app",
server: {
memorySize: 2048,
environment: {
API_BASE: api.url,
},
},
});