Skip to content
Runner · Get runningStep 2 of 6

Scaffold

One command produces a standalone, runnable runner project with the whole ladder pre-wired.

There is one front door. Run it:

npx create-automark-runner my-vault

It produces a standalone, immediately-runnable runner project: a working runtime plus a starter plugin, my-strategy, already registered. The starter noops with a reason; your strategy is an edit to its decide(), not a blank file. (Every rung of the Build ladder is also a complete plugin you can copy in.)

What the command produces

my-vault/
  src/
    engine/        # scheduler · signer · executor · RPC · CLIDO NOT EDIT
    plugins/
      index.ts     # the registry: my-strategy ships registered
      my-strategy/ # the starter plugin — edit decide() to make it yours
  .env             # created for you, RUNNER_PLUGINS=my-strategy pre-filled
  package.json     # deps: @automark/sdk, @mysten/sui, dotenv — the runtime is vendored in engine/

Two zones, and the boundary between them is the whole point:

  • engine/ is the runtime: the part you trust and never touch. It owns the key, the RPC, the scheduler, and the CLI.
  • plugins/ is yours. A plugin is a function; index.ts decides which ones run.

Configure the environment

cd my-vault
# .env was already created, with RUNNER_PLUGINS=my-strategy pre-filled. Set:
#   OPERATOR_PRIVATE_KEY=...                 the key that signs as the vault operator
#   PLUGIN_MY_STRATEGY_VAULT_ID=0x…          the vault the starter operates

You'll need two things: the operator key — an Ed25519 keypair (suiprivkey1…) whose address is the vault's operator_address, which you generate and hold yourself — and the vault id, which you get by creating a vault in Studio.