@shiftlabsas/ciwawa
v0.1.1
Published
The tiny dog that runs your big CI — local GitHub Actions runner with secrets, vars, and PR reporting
Maintainers
Readme
ciwawa is a CLI that wraps act with a polished interactive interface so you can run your GitHub Actions CI workflows locally — fetching secrets and vars straight from GitHub, before you push.
ciwawa ciThat's it. It finds your CI workflow, pulls in all GitHub vars automatically, prompts you once for secret values (stores them locally, never again), then runs the whole thing in a live terminal UI powered by ink. When it's done, it posts the results as a comment on your open PR.
Why
- Catch broken CI before it hits GitHub
- No copy-pasting secrets into
.envfiles manually - Pre-push hook integration via husky so it runs automatically
- Live job/step status in the terminal while it runs
Requirements
Install
npm install -g @shiftlabsas/ciwawaShort alias also available: cww
Local Development
npm run build # compile TypeScript to dist/
npm link # symlink the binary globally so `ciwawa` resolves to your local buildMake a change, re-run npm run build, and the linked binary picks it up immediately.
Usage
Run CI locally
ciwawa ciOptions:
| Flag | Description |
| ------------------- | ---------------------------------------------------------- |
| -j, --job <name> | Run only a specific job |
| --bg | Run in the background, return the terminal immediately |
| --dry-run | Dry run — validate without executing |
| --no-comment | Skip posting results to the PR |
| --env-file <path> | Load secrets from a .env file instead of the local store |
Run any workflow
ciwawa run # interactive picker
ciwawa run deploy-beta # by nameList workflows
ciwawa listSetup (husky pre-push hook)
ciwawa setupInstalls a husky pre-push hook so ciwawa ci runs automatically before every git push. Also writes a config file with your preferences.
Secrets
GitHub secret values are never accessible via the API — only names. ciwawa prompts you once and remembers them.
ciwawa secrets list # show stored names (no values)
ciwawa secrets set FOO # update a specific secret
ciwawa secrets clear # wipe the store for this repoSecrets are stored in ~/.ciwawa/secrets/<owner-repo>.env with chmod 600.
Background runs
ciwawa ci --bg # detach and return terminal
ciwawa status # show all recent runs
ciwawa logs # tail the latest run's log
ciwawa cancel # kill the running background jobHow secrets work
| Source | Available | How |
| -------------- | --------------------- | --------------------------------- |
| GitHub Secrets | Names only | gh secret list |
| GitHub Vars | Names + values | gh variable list |
| Workflow file | Which secrets it uses | parsed from ${{ secrets.NAME }} |
On first run, ciwawa cross-references the workflow's secret refs against GitHub's secret names, then prompts for any values not yet in the local store. Subsequent runs are silent.
PR comment
After every run, ciwawa checks if the current branch has an open PR and posts (or updates) a comment:
🐕 ciwawa CI — owner/repo
| Job | Status | Duration |
|--------|------------|----------|
| lint | ✅ passed | 12s |
| test | ❌ failed | 34s |
| build | ⏭ skipped | — |
Result: ❌ Failed
Workflow: .github/workflows/ci.yml
Ran at: Thu, 29 May 2026 14:30:22 GMT
Machine: MacBook-Pro.localLicense
MIT
