Skip to main content
The Deno 2 Release Candidate is here
Learn more

StateBacked.dev CLI - launch an XState backend in 5 minutes

GitHub license npm version CI Docs

StateBacked.dev runs XState machines as your secure, scalable, serverless backend.

Check out the full State Backed docs for more detailed information and to get started with your own XState backend as a service.

5 minute quick start

$ npm install -g smply
$ smply machines create --machine toggler --node ./toggler.ts
$ # You can now launch instances of your toggler machine, send events, and read state!

toggler.ts

import { createMachine } from "xstate";
import type { AllowRead, AllowWrite } from "@statebacked/machine-def";

// super simple authorization
// authContext comes from a JWT that you create your user's information,
// signed with one of your State Backed keys (generate a key via `smply keys create`)
export allowRead: AllowRead = ({ machineInstanceName, authContext }) =>
  machineInstanceName === authContext.sub

export allowWrite: AllowWrite = ({ machineInstanceName, authContext }) =>
  machineInstanceName === authContext.sub

// export any XState state machine with any guards, actions, or services and any delays.
// just make sure that no service runs for more than 10 seconds.
export default createMachine({
  predictableActionArguments: true,
  initial: "on",
  states: {
    on: {
      on: {
        toggle: "off",
      },
    },
    off: {
      on: {
        toggle: "on",
      },
    },
  },
});