try.rs · try-me-maybe
A Rust port of tobi/try — instant, fuzzy-searchable, dated experiment directories. Your brain doesn't work in neat folders; every experiment gets a home, and every home is instantly findable.

Conformance target: tobi/try v1.9.3, byte for byte. Upstream's own 37-test suite passes unmodified (387/387); fuzzy scoring matches upstream Ruby bit-for-bit. Details in COMPAT.md.
- Package:
try-me-maybe· Binary:tryme· Your command:try(the shell functiontryme initemits) — no collision with upstream's Homebrewtry; they coexist (ADR-0001)
Install
Package channels go live with the first tagged release. Until then, build from source:
cargo install --git https://github.com/indexzero/try.rs try-me-maybe
# mise
# Homebrew (tap)
# prebuilt binary
# from source (crates.io)
Then wire up the shell function (bash/zsh shown; fish works too):
# ~/.bashrc or ~/.zshrc
# or let it edit your rc file for you (idempotent):
Usage
Inside the selector: type to filter · ↑/↓ or Ctrl-P/N navigate · Enter
select or create · Ctrl-T new try · Ctrl-R rename · Ctrl-G graduate a
try into a permanent project (leaves a symlink behind) · Ctrl-D mark for
deletion (type YES to confirm) · Esc cancel.
Every selection is emitted as a shell script on stdout and eval'd by the
wrapper — that's how a child process cds your shell.
Features
- Byte-parity port: the whole upstream conformance suite, unmodified, plus golden-frame and bit-exact-scoring fixtures generated from upstream
- Single static binary (musl on Linux); no runtime dependencies —
gitis shelled out to only in the scripts youeval - Recency-weighted fuzzy ranking (selecting a try boosts it next time)
- bash, zsh, and fish wrappers; PowerShell via
tryme install
Configuration
| Env var | Meaning | Default |
|---|---|---|
TRY_PATH |
tries root | ~/src/tries |
TRY_PROJECTS |
graduate destination | parent of TRY_PATH |
NO_COLOR / NO_COLORS |
disable ANSI styling | unset |
TRY_WIDTH / TRY_HEIGHT |
terminal size override | detected |
Flags: --path PATH (last wins), --no-colors, --help, --version.
Man page: man tryme · completions for bash/zsh/fish under
completions/ — all generated from one committed
usage spec (try.usage.kdl).
How is this different?
| this port | tobi/try (upstream) | try-rs | try-cli | |
|---|---|---|---|---|
| Language | Rust | Ruby | Rust | Rust |
| Passes upstream's conformance suite | 387/387, unmodified | yes (it's upstream) | not a stated goal | not a stated goal |
| Byte-identical scripts/frames/scoring | yes (fixture-pinned) | — | not a stated goal | not a stated goal |
| Needs Ruby at runtime | no | yes | no | no |
Upstream is the canonical tool — if you're happy with a Ruby dependency, use it. The other Rust ports are independent reimplementations with their own (good!) ideas; this one is a conformance port: same tool, no Ruby.
Development
Decisions live in docs/adr/; behavior authority and quirk
rulings in ADR-0003; suite
provenance in spec/UPSTREAM.
License
MIT. Upstream tobi/try is MIT; the adopted suite under
spec/tests/ retains upstream's copyright.