Skip to content
starskiff

Why starskiff

A lightweight skiff to Starship's heavy vessel

starskiff is the lightweight counterpart to Starship: where Starship stands up multi-chain environments on Kubernetes, starskiff boots a single real chain node in seconds — for integration tests and CI. Not a mock; the actual node — run from a binary or a container image.

Starshipstarskiff
InfraKubernetes + Helm + DockerNone — child process (binary or docker run)
Startup2–5 min3–5 sec
DependenciesK8s clusterA binary or Docker
State resetHelm redeploy (minutes)kill + restart (~3s)
Best forProduction simulationDev/test

Design decisions

  • No Pool/Server layer (unlike prool) — Cosmos nodes expose their own RPC/gRPC/API, so a proxy is unnecessary.
  • No orchestration — a node runs as a plain child process, whether from a binary on PATH or a container (docker run, still a child process). No Kubernetes, no scheduler.
  • Fresh state per run — each start() creates a temporary home directory, initializes a new chain from genesis, and stop() deletes it.
  • SDK-version tolerantcosmosBase handles genesis structure differences across Cosmos SDK versions (v0.47 vs v0.50+), and warns when a config key it expected to patch has drifted.
  • Extensible — any Cosmos SDK binary works via cosmosBase / cosmosEvmBase.

Testing strategies

StrategyIsolationSpeedUse case
Account isolationPracticalFastMost tests — each test uses unique accounts
Suite-level instanceFull~5s setupTests that modify chain-wide state
Shared instanceNoneFastestRead-only queries, smoke tests

Recommended: fund multiple accounts in genesis, assign each test its own account(s). See Test Accounts.