# start-command — Rust crate
[](https://crates.io/crates/start-command)
[](https://docs.rs/start-command)
[](https://github.com/link-foundation/start/actions/workflows/rust.yml)
[](../LICENSE)
Rust implementation of the [`start-command`](../README.md) CLI. The binary is
called `start` and behaves like the `$` command from the JavaScript package.
## Installation
```bash
# From crates.io:
cargo install start-command
# From source:
cd rust
cargo install --path .
```
## Usage
```bash
start echo "Hello World"
start ls -la
start cargo test
start git status
start --list
start --help
start -i docker -d --label task.tool=codex -- my-task
start --attach <id>
start --resume <id> -- <command>
start --resume-all
```
See the project-wide [README](../README.md), [docs/USAGE.md](../docs/USAGE.md),
[docs/PIPES.md](../docs/PIPES.md), and
[docs/EXAMPLES.md](../docs/EXAMPLES.md) for the full user-facing guide and
checked examples.
`-h` also prints usage. Labels persist across Docker resumes. New detached
containers support copy-free command handoff; legacy snapshots require capacity
preflight. Log uploads are private and sanitized; manual `--no-sanitize` opts out.
## Development
```bash
cd rust
cargo build
cargo test
cargo fmt --all
cargo clippy --all-targets --all-features
```
## Releases
Rust releases are published to crates.io and tagged `rust-v<version>` in
GitHub Releases. The release title carries the `[Rust]` prefix, e.g.
`[Rust] 0.14.0`, so JS and Rust releases can be told apart at a glance.
- **Release history**: https://github.com/link-foundation/start/releases?q=%5BRust%5D
- **Changelog fragments**: [`changelog.d/`](changelog.d/) — each PR adds one
fragment with a `bump: patch|minor|major` frontmatter, which is collapsed
into the consolidated `CHANGELOG.md` at release time.
## License
Released into the public domain under the [Unlicense](../LICENSE).
### Docker resource and recovery controls
Launch with `--memory 64m`, `--memory-swap 64m` and `--cpus 1`, or use daemon
percentages and uniform ranges such as `--memory '70%-80%'`. Memory-swap defaults
to memory. `--cpu-penalty` enables delayed caps and reports state through status.
Manual `--resume <id> --memory 128m` updates before starting;
`--on-kill-resume-memory` changes memory only after a fresh qualifying OOM.
See the [full resource and recovery guide](../README.md#docker-launch-limits-recovery-limits-and-cpu-penalty)
and [incident research](../docs/case-studies/issue-195/README.md).