Jarvy
Jarvy is a fast, cross-platform CLI that standardizes and automates local development environment setup from a declarative jarvy.toml config file. It installs 200+ tools using native package managers (Homebrew, apt, dnf, winget, Chocolatey) and ensures every team member has an identical development environment -- no cloud VMs, no containers, no recurring costs.
Why Jarvy?
- Instant onboarding -- New developers run one command and get a fully configured workstation in seconds, not days
- Dev environment as code --
jarvy.tomlis version-controlled, replacing wiki pages and tribal knowledge - Cross-platform -- Same config works on macOS, Linux, and Windows using native package managers
- Local and offline -- No cloud dependency, no container overhead, full native performance
- Safe and idempotent -- Run repeatedly; Jarvy detects what's already installed and skips it
- 200+ tools supported -- From git and docker to terraform, kubectl, and language runtimes
Installation
# With Cargo
# With Homebrew (macOS/Linux)
# Or download a binary from GitHub Releases
# https://github.com/bearbinary/jarvy/releases
Verify installation:
Early-Release Channel (Opt-In)
Jarvy ships pre-release tags (-rc.N, -beta.N) to a separate channel so
you can validate fixes and features before they land in stable. Opt in any
of three ways — all are reversible.
On install — set JARVY_CHANNEL before running the install script:
# Unix
JARVY_CHANNEL=beta |
# Windows PowerShell
|
Per-update — pass --channel:
Persistent — set in ~/.jarvy/config.toml:
[]
= "beta" # stable | beta | nightly
Channel semantics:
| Channel | Accepts |
|---|---|
stable |
Only vX.Y.Z tags |
beta |
vX.Y.Z, vX.Y.Z-rc.N, vX.Y.Z-beta.N |
nightly |
Everything including -alpha.N |
Opting into beta is the easiest way to help validate releases. Issues
tagged release-blocker or regression filed against a pre-release block
its promotion to stable — see
docs/release-testing.md for the full process.
Quick Start
1. Create a config
# Interactive wizard
# Or from a template
Or create jarvy.toml manually in your project root:
[]
= false
[]
= "latest"
= "20"
= "latest"
= "latest"
2. Run setup
Output:
Setting up development environment...
[OK] git 2.44.0 (installed: 2.44.0) - satisfies requirement
[INSTALL] node 20 - installing via brew...
[OK] node 20.11.1 installed successfully
[OK] docker 25.0.3 (installed: 25.0.3) - satisfies requirement
[INSTALL] jq latest - installing via brew...
[OK] jq 1.7.1 installed successfully
Setup complete: 4 tools (2 installed, 2 already satisfied)
3. Share with your team
Commit jarvy.toml to your repository. Add to your project's README:
# Set up development environment
&&
Configuration
Jarvy supports simple and detailed tool specifications:
[]
= false
[]
# Simple: tool = "version"
= "latest"
= "20"
= "3.12"
= "latest"
# Detailed: tool = { version, version_manager }
= { = "stable", = true }
# Role-based tool sets
[]
= "Frontend development"
= ["node", "bun", "typescript"]
[]
= "DevOps/Platform engineering"
= "base"
= ["kubectl", "terraform", "docker", "helm"]
# Post-install hooks
[]
= "echo 'Environment ready!'"
[]
= "corepack enable"
# Environment variables
[]
= "$PWD"
= "development"
# Custom project commands (used by interactive menu)
[]
= "npm start"
= "npm test"
See Configuration Reference for all options including environment variables, secrets, services, drift detection, network/proxy settings, and git configuration.
Shell Completions
Jarvy supports tab completions for all major shells:
# Bash
# Zsh
# Fish
# PowerShell
Or view installation instructions for your shell:
Key Commands
| Command | Description |
|---|---|
jarvy setup |
Install all tools from jarvy.toml |
jarvy init |
Create a new config interactively or from a template |
jarvy doctor |
Health-check your environment |
jarvy validate |
Validate a jarvy.toml file |
jarvy diff |
Show what's installed vs. what's needed |
jarvy drift check |
Detect environment drift from baseline |
jarvy tools |
List all 200+ supported tools |
jarvy templates list |
Browse available project templates |
jarvy completions |
Generate shell completions |
jarvy diagnose |
Create a diagnostic bundle for support |
jarvy mcp |
Start the MCP server for AI agent integration |
Run jarvy --help for the full command reference.
Use in CI/CD
GitHub Actions
jobs:
setup:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Jarvy
uses: bearbinary/jarvy/.github/actions/setup-jarvy@main
with:
method: cargo
- run: jarvy setup --ci
The --ci flag enables non-interactive mode with CI-provider detection (GitHub Actions, GitLab CI, CircleCI, Azure DevOps, Jenkins, Bitbucket).
Scaffold a New Tool
Contributors can add tool support using the built-in scaffolding command:
# Creates src/tools/mytool/ with the define_tool! macro template
# Or if cargo-jarvy is installed:
AI/LLM Integration
Jarvy includes a built-in MCP server that lets AI agents discover, check, and install tools via JSON-RPC:
For AI agents and LLMs, see llms.txt for a structured reference optimized for machine consumption.
Documentation
- Quickstart Guide
- Configuration Reference
- CLI Reference
- Hooks
- Adding Tools
- CI/CD Integration
- MCP Server
- FAQ
- Privacy Policy
Contributing
We welcome contributions! See CONTRIBUTING.md for guidelines.
# Build
# Test
# Lint
&&
# Scaffold a new tool
License
Dual-licensed under MIT or Apache-2.0, at your option.