What the hell is going on with this project?
A fast, local-first CLI for understanding your project and development environment. yoo reads project files, Git state, installed tooling, and your local configuration, then reports what matters in the terminal.
- Local-first: project data stays on your machine.
- Fast: one small Rust executable with no daemon or account.
- Useful context: project identity, Git status, toolchain health, and session reminders in one place.
- Terminal-native: readable output by default, stable JSON when another tool needs it.
- Cross-platform: Linux, macOS, and Windows, with package channels for each.
- No telemetry or AI requirement.
cargo install yoo
cd path/to/a/project
yoo --fastThe verified installer is convenient when Rust is not already installed:
curl --proto '=https' --tlsv1.2 -LsSf https://yo-cli.vercel.app/yo-setup | shChoose one method. The full platform notes and verification steps are in docs/installation.md.
| Channel | Install | Status |
|---|---|---|
| Arch / AUR | yay -S yoo-bin or paru -S yoo-bin |
Community package |
| APT (Debian/Ubuntu) | curl -fsSL https://yo-cli.vercel.app/apt/setup.sh | sudo sh then sudo apt install yoo |
Self-hosted signed repository |
| DNF (Fedora/RHEL) | sudo dnf config-manager addrepo --from-repofile=https://yo-cli.vercel.app/rpm/yoo.repo then sudo dnf install yoo |
Self-hosted signed repository |
| Alpine | Add https://yo-cli.vercel.app/alpine to /etc/apk/repositories, then sudo apk add yoo |
Self-hosted APK repository |
| openSUSE Tumbleweed | sudo zypper ar -f https://yo-cli.vercel.app/opensuse yoo && sudo zypper refresh && sudo zypper install yoo |
Self-hosted signed repository |
| Nix | nix run github:nihitdev/yo-cli |
GitHub flake |
| Flatpak | flatpak remote-add --user yoo https://yo-cli.vercel.app/flatpak/yoo.flatpakrepo && flatpak install --user yoo io.github.nihitdev.yoo |
Self-hosted repository |
| Cargo Binstall | cargo binstall yoo |
Prebuilt GitHub Release binary |
If you already use the APT repository, rerun its setup command whenever the repository signing key is rotated. Existing systems trust the key they first installed and will reject repository updates signed by a replacement key.
.deb, .rpm, .apk, .xbps, and .snap files are also attached to each GitHub Release for direct installation. Void packages are built and tested in CI; there is no hosted XBPS repository, and Snap Store publication is disabled.
brew tap nihitdev/tap
brew install yooOr use cargo install yoo, cargo binstall yoo, or the verified installer.
winget install --id Nihitdev.yoo --exact
choco install yooScoop metadata is generated with releases, but the community bucket is not currently published. Chocolatey and WinGet community review can delay availability of a new version.
The npm package downloads the matching native release binary during installation. pnpm and Bun use the same package:
npm install -g @nihit_dev/yoo
pnpm add -g @nihit_dev/yoo
bun add -g @nihit_dev/yooSnap builds are attached to GitHub Releases. Snap Store publishing is currently disabled; install a downloaded artifact with snap install --dangerous when needed.
Commands inspect the current directory. Use cd path/to/project first; positional project paths are not supported.
| Command | Purpose |
|---|---|
yoo |
Session summary with project and Git context |
yoo doctor |
Check local tools, project detection, and configuration |
yoo project |
Project metadata, source counts, and Git details |
yoo snapshot |
Save a local snapshot of the current project |
yoo snapshot list |
List saved snapshots in reverse chronological order |
yoo snapshot compare |
Compare the two newest local snapshots |
yoo fetch |
Project plus development environment report |
yoo status |
Alias for yoo fetch (environment and project report) |
yoo session [MINUTES] |
Start a local coding-session timer |
yoo tip / yoo tips |
Show a configured reminder or tip pack |
yoo edit |
Open the current project in the configured editor |
yoo init / yoo config |
Create configuration and a sample tip pack / print the configuration file path |
yoo completions SHELL |
Generate Bash, Zsh, Fish, or PowerShell completions |
Useful output flags include --fast, --plain, --no-art, --theme NAME, and --json for project and fetch.
yoo doctor
yoo project --json
yoo fetch --plain
yoo snapshot
# make changes, then capture another point in time
yoo snapshot
yoo snapshot list
yoo snapshot compare
yoo session 25Snapshots are saved as JSON files in .yoo/snapshots/ inside the current
project. They stay on your machine and are excluded from Git by the default
.gitignore entry. snapshot compare compares the two newest saved snapshots;
save another snapshot after making changes to track progress over time.
Check the installed CLI version with yoo --version:
yoo 1.1.2
project --json and fetch --json include yoo_version. Their project.version
field is the inspected project's version, when available. --json cannot be
combined with --plain, --no-art, or --theme.
Git inspection distinguishes clean and dirty repositories, repositories before their first commit, and non-Git directories. Git failures and timeouts are reported on stderr with exit status 1 (including in JSON mode), rather than being reported as a clean tree. Exit status 2 indicates invalid CLI arguments.
yoo doctor prints all checks and exits 1 if any check fails; warnings alone
exit 0. The tool checks currently require Rust, Cargo, Git, Rustfmt, and Clippy.
These are development health checks, not dependencies needed to launch yoo.
Source totals include all supported source extensions across languages, respect
nested .gitignore rules, .git/info/exclude, and global Git excludes, and skip
symlinks and common generated/vendor directories (target, node_modules,
dist, build, .next, .venv, venv, vendor, __pycache__, .git). Counts
also honor .ignore files. Files that cannot be read are skipped.
Run yoo init to create the default configuration without overwriting an
existing file. Run yoo config to print its exact location, then edit that file.
See examples/config.toml for supported settings.
Default locations:
- Linux:
$XDG_CONFIG_HOME/yoo/config.toml, or~/.config/yoo/config.toml. - macOS:
~/Library/Application Support/yoo/config.toml. - Windows:
%USERPROFILE%\.config\yoo\config.toml.
The editor setting accepts a single executable name or path, not a shell command
with arguments. yoo edit --editor overrides it for one invocation; otherwise
VISUAL, EDITOR, and automatic detection are used when it is empty.
Run yoo doctor for tool, configuration, project, and Git diagnostics. Use
yoo config to locate invalid configuration. If Git inspection fails, check
git status in the same directory; commands have a five-second execution timeout.
For installation and PATH issues, see the installation guide.
yoo includes neon, ocean, mono, dracula, tokyo-night, gruvbox, nord, rose-pine, and catppuccin. Set one in the file reported by yoo config, or pass --theme NAME.
Normal operation is local. yoo does not require an account, daemon, cloud service, telemetry, or network connection. It reads the current project and development environment and prints the result; project data is not uploaded.
Rust 1.85 or newer and Cargo are required for the CLI:
git clone https://github.com/nihitdev/yo-cli.git
cd yo-cli
cargo build --release --locked
cargo test --lockedNode.js is only needed when working on the npm wrapper or the website in site/.
Release maintainers should follow docs/releasing.md. Packaging notes live in packaging/README.md.
Issues and pull requests are welcome. Read CONTRIBUTING.md before making a change. Security reports belong in SECURITY.md.
GPL-3.0-or-later. See LICENSE.