| name | dsr |
| description | Doodlestein Self-Releaser - fallback release infrastructure for when GitHub Actions is throttled. Local builds, cross-platform releases, supply chain security. Use when: GH Actions slow, local release, build hosts, dsr command. |
dsr - Doodlestein Self-Releaser
Fallback release infrastructure for when GitHub Actions is throttled (>10 min queue time).
When to Use
Use dsr when:
- GitHub Actions queue time exceeds 10 minutes
- You need to build/release a tool locally
- CI is down or unreliable
- You want to test builds across platforms before pushing
Commands Reference
Core Pipeline
dsr check <repo>
dsr check --all
dsr build <tool>
dsr release <tool> <version>
dsr fallback <tool> <version>
System Management
dsr doctor
dsr doctor --fix
dsr health all
dsr health check mmini
dsr status
dsr prune
Configuration
dsr config init
dsr config show
dsr config get <key>
dsr config set <key> <val>
dsr repos list
dsr repos add <repo>
dsr repos info <tool>
dsr repos validate
Supply Chain Security
dsr signing init
dsr signing sign <file>
dsr signing verify <file>
dsr sbom <project>
dsr slsa generate <artifact>
dsr slsa verify <artifact>
dsr quality <tool>
Testing & Verification
dsr canary run <tool>
dsr canary run --all
dsr verify upgrade <tool>
dsr release verify <tool> <v>
Build Hosts
| Host | Platform | Connection | Purpose |
|---|
| trj | Linux x64 | local | Primary build host, act runner |
| mmini | macOS arm64 | SSH via Tailscale | Native macOS builds |
| wlap | Windows x64 | SSH via Tailscale | Native Windows builds |
Common Workflows
Release When GH Actions is Throttled
dsr check --all
dsr build ntm --version 1.5.2
dsr release ntm 1.5.2
dsr fallback ntm 1.5.2
Health Check Before Building
dsr doctor
dsr health all
dsr health check mmini
Configure a New Tool
dsr repos add dicklesworthstone/my-tool --local-path /data/projects/my-tool
dsr repos validate
dsr build my-tool --dry-run
Clean Up Old Artifacts
dsr prune --dry-run
dsr prune --age 30d
dsr prune --tool ntm
Exit Codes
| Code | Name | Meaning |
|---|
| 0 | SUCCESS | Operation completed |
| 1 | PARTIAL_FAILURE | Some targets/repos failed |
| 2 | CONFLICT | Blocked by lock |
| 3 | DEPENDENCY_ERROR | Missing gh auth, docker, ssh |
| 4 | INVALID_ARGS | Bad options or config |
| 5 | INTERRUPTED | User abort or timeout |
| 6 | BUILD_FAILED | Compilation error |
| 7 | RELEASE_FAILED | Upload/signing failed |
| 8 | NETWORK_ERROR | Connectivity issue |
JSON Output
All commands support --json for machine-readable output:
dsr check ntm --json | jq '.status'
dsr health all --json | jq '.hosts[] | select(.status == "unhealthy")'
dsr status --json | jq '.last_run'
Troubleshooting
SSH Connection Fails
tailscale status
ssh -o ConnectTimeout=5 mmini "echo ok"
dsr health clear-cache
dsr health check mmini
Build Fails
dsr doctor --fix
dsr health check trj --json | jq '.toolchains'
dsr build ntm --verbose
Release Upload Fails
gh auth status
gh release view v1.5.2 --repo Dicklesworthstone/ntm
dsr release ntm 1.5.2 --resume
Docker/Act Issues
docker info
act --version
colima status
Configuration Files
~/.config/dsr/
├── config.yaml # Main configuration
└── repos.d/
└── *.yaml # Per-repo build configs
~/.local/state/dsr/
├── logs/ # Run logs
├── artifacts/ # Build artifacts
└── manifests/ # Build manifests
~/.cache/dsr/
├── act/ # Act Docker layer cache
└── builds/ # Cached build artifacts
Integration with Beads
When working on dsr-related beads:
br ready | grep dsr
br update bd-1jt.x.y --status in_progress