w6w
The open workflow platform

Define, run, and share workflows over any API.

w6w gives you a small, sandbox-first runtime for automation. Publishers ship Apps as code; hosts run a lightweight Registry + Server; end users compose Workflows in the studio. All layers are decoupled and open source.

What w6w is

Apps are just code

An App is a directory with a package.json manifest, action files, and auth methods. No SDK to install — the runtime types are all you consume.

Sandbox by default

Every hook runs in a Deno worker with import: false and a per-invocation network allowlist. Credentials never leave the host.

Content-addressed registry

Registered apps carry a SHA-256 digest of their canonicalized description. Same source, same digest — re-registering is a no-op.

Packs, not sprawl

A single w6w-pack.json installs many apps at once. Ship a first-party bundle or a hand-picked internal set from any Git repo.

OAuth built in

The reference server ships full authorization_code + refresh flows, per-installation client-credential storage, and a studio popup handshake.

Runtime-agnostic types

@w6w/types is pure TypeScript with no runtime. Publish an App, embed the runtime, or write your own — the shapes stay portable.

Register an app in one call

import { createRegistry, InMemoryAppDataStore } from "@w6w/registry";

const registry = createRegistry({ store: new InMemoryAppDataStore() });

// Single app
await registry.register("github:w6w-io/w6w-apps@main#apps/slack");

// Or the whole first-party pack — 25 apps in one shot
await registry.registerPack("github:w6w-io/w6w-apps@main");

Apps ship together

The first-party pack at w6w-io/w6w-apps ships 25 integrations (Slack, Notion, Google Sheets, Airtable, Stripe-adjacent, and more) as one w6w-pack.json.

Airtable Anthropic Asana Bitbucket Brevo Contentful Discord Dropbox Eventbrite Facebook Lead Ads Gmail Google Calendar Google Docs Google Drive Google Sheets HubSpot Klaviyo Mailchimp Mistral AI Notion OpenAI SendGrid Slack Twilio WordPress