Deterministic order
Smokey executes files alphabetically (000, 010, …, 999). You always know what ran before what — no hidden scheduler.
CLI · smoke tests · automation
A tiny Bash runner that executes numbered .d suites, provides explicit env sharing, and contains Bash edge cases such as exit traps.
No YAML, no daemons — just boring, predictable smoke tests that work on any CI runner, developer laptop, container, Raspberry Pi, or VM.
$ smokey
>> running tests.d/000-setup/run.sh
>> running tests.d/010-api-health.sh
!! api-health failed (timeout)
--- smokey summary ---
tests: 1/2 · failures:
failed tests.d/010-api-health.sh
Why Smokey
Smokey executes files alphabetically (000, 010, …, 999). You always know what ran before what — no hidden scheduler.
Smokey imposes almost no repo structure beyond numbered entries, so you can keep your project layout instead of bending it around an opinionated framework.
You write the setup and teardown scripts yourself; Smokey makes sure they run automatically at the right points before and after the suite.
Every invocation gets a random SMOKEY_STATE_DIR, and cross-step env vars only persist when you save them explicitly through built-in helper commands.
All you need is Bash. Smokey wraps that power in guard rails against unwanted exits, leaky traps, env-var drift, and shared-state surprises.
Workflow
tests.d directoryCreate a tests.d/ directory in your project root and fill it with numbered scripts.
tests.d/
000-setup.sh
010-check-binaries.sh
020-check-network.sh
999-cleanup.sh
Use 000-* for setup, regular numbered entries for the main checks, and 999-* for cleanup.
$ cd myproject
$ smokey
>> running tests.d/000-setup/run.sh
>> running tests.d/010-api-health.sh
!! api-health failed (timeout)
--- smokey summary ---
tests: 1/2 · failures:
failed tests.d/010-api-health.sh
Change into your project directory and run smokey.
Use smokey --tests-dir tests.d when the suite lives somewhere else. Pass --fail-fast, --preserve, or --reuse-state when debugging flakes.
Use Smokey’s exit code as a deployment guardrail. The summary prints only non-OK steps so logs stay readable for humans.
Feature deep dive
CLI snippet
# install for current user (latest stable tag)
curl -fsSL https://raw.githubusercontent.com/micwin/smokey/v0.2.0/install.sh | bash
# or install the Debian package from Releases
curl -LO https://github.com/micwin/smokey/releases/download/v0.2.0/smokey_0.2.0_amd64.deb
sudo dpkg -i smokey_0.2.0_amd64.deb
# run directly from a cloned repo
git clone git@github.com:micwin/smokey.git
cd smokey && smokey
# override tests directory only when needed
smokey --tests-dir ./infra/tests.d --fail-fast
Trusted in ops & testing
Drop Smokey into your repo, describe the most important workflows, and keep shipping without guesswork.