three shade
Back to work

Developer tools · Open source · 2025

Hoi

A YAML-driven command runner for engineering teams.

4,000+ installs via cargo · written in Rust

.hoi.ymlyaml
1version: 1
2description: "Dev commands for the whole team."
3
4commands:
5 up:
6 cmd: docker compose up -d
7 description: "Start the dev stack."
8 alias: u
9
10 seed:
11 cmd: |
12 npm run db:migrate
13 npm run db:seed
14 description: "Migrate and reseed the database."
15
16 release:
17 cmd: cargo release patch --execute
18 description: "Tag and push a patch release."
19 alias: ship
▸ hoi up — ok3 commands · 2 aliases

Overview

Hoi is a small command-line tool that turns team-specific workflows into memorable aliases. Drop a .hoi.yml in your repo and the commands your team actually runs (boot the containers, seed the database, roll a release) become one word each, with environment variables and multi-line chains handled for you.

Challenge

Every team ends up with the same problem: a growing pile of scripts, stale READMEs, and tribal knowledge about how to run locally. New hires learn it by pairing. Senior engineers learn it by guessing wrong once a month. Existing task runners either felt heavy (full build systems bolted onto a monorepo) or clumsy, a pile of shell functions nobody owns.

Approach

We wrote it in Rust, leaned into a single-file YAML contract, and kept the binary small and dependency-free at runtime. Recursive .hoi.yml lookup walks parent directories so monorepos and nested projects compose cleanly. A global file at $HOME/.hoi/.hoi.global.yml covers commands that cross projects. .env and .env.local are loaded with explicit precedence so secrets stay out of the yaml and out of git.

Outcome

Over 4,000 installs via cargo install hoi. Several releases shipped, no telemetry, no ads. Used daily by teams who would rather type `hoi up` than remember the exact docker-compose-and-npm incantation their project requires this week.

Stack

  • Rust
  • Cargo
  • YAML
  • Clap
  • Serde