A modern developer project manager written in Rust
Fast. Simple. Extensible.
Getting Started • Documentation • Architecture • Contributing
dev-cli is a command-line tool that helps you manage, discover, and launch your Git repositories with speed and simplicity. Instead of manually navigating to project directories, dev-cli maintains a configuration of your project roots and automatically opens them in your favorite IDE.
Key features:
- ⚡ Fast project discovery — automatically find Git repositories in configured directories
- 🎯 IDE detection — detects VS Code, Cursor, Claude Code, Windows Terminal, and more
- 🚀 One-command launch — open any project in any IDE instantly
- ⚙️ Configuration management — TOML-based configuration for projects and defaults
- 🧙 First-run onboarding — interactive wizard collects project roots and default IDE on first launch
- 🔄 Cross-platform — built and tested on Windows, macOS, and Linux
| Feature | Status | Notes |
|---|---|---|
| Project discovery | ✅ Active | Configured roots + automatic Git-repo scanning |
| IDE detection | ✅ Active | 7 IDEs across PATH and standard install paths |
| Quick project launch | ✅ Active | dev open <project> |
| Configuration management | ✅ Active | TOML config with serde defaults |
| First-run onboarding | ✅ Active | Interactive wizard on first launch |
| Automatic repository scanning | ✅ Active | Honours .gitignore via the ignore crate |
| Git integration | 🔄 Planned | Branch + status per project |
| Project templates | 🔄 Planned | Quick scaffolding |
| Dashboard mode | 🔄 Planned | Interactive TUI |
$ dev project list
Configured Project Roots
📁 C:\Users\parth\Projects
📁 C:\Users\parth\Work
Discovered Git Repositories
• dev-cli (C:\Users\parth\Projects\dev-cli)
• blog (C:\Users\parth\Projects\blog)
$ dev open dev-cli --ide cursor
Opened C:\Users\parth\Projects\dev-cli
$ dev ide list
Installed IDEs:
✓ VS Code (C:\Program Files\Microsoft VS Code\bin\code.cmd)
✓ Cursor (C:\Program Files\Cursor\Cursor.exe)
✓ Claude Code (C:\Users\parth\.local\bin\claude.exe)
- Download the latest binary for your operating system
- Store the binary securely and add it to your PATH
The first time you run any dev command, an onboarding wizard walks you through:
- Choosing the directory (or directories) that hold your Git projects.
- Picking the IDE to launch by default.
The wizard writes a config.toml so subsequent runs are immediate. You can re-run the same setup with:
dev config init # write defaults if missing
dev config show # print the active configuration-
List installed IDEs:
dev ide list
-
Discover projects under the configured roots:
dev project list
-
Open a project:
dev open my-project dev open my-project --ide cursor
Manage and launch projects.
| Command | Description |
|---|---|
dev project list |
List configured project roots and discovered Git repos |
dev project open <NAME> |
Open a project in the default IDE |
dev project open <NAME> --ide <IDE> |
Open a project in a specific IDE |
dev open <NAME> |
Shorthand for dev project open |
Examples:
dev project list
dev open dev-cli
dev open dev-cli --ide vscodeManage development configuration.
| Command | Description |
|---|---|
dev config show |
Display current configuration |
dev config init |
Write the default configuration if missing |
dev config set-default-ide <IDE> |
Set default IDE for launching projects |
Examples:
dev config show
dev config init
dev config set-default-ide cursorDiscover installed development environments.
| Command | Description |
|---|---|
dev ide list |
List all detected installed IDEs |
Examples:
dev ide list- Rust 1.88+ (edition 2024) — install from rustup.rs
- Git
- Windows, macOS, or Linux
# Clone the repository
git clone https://github.com/0xParthP/dev-cli.git
cd dev-cli
# Build debug binary
cargo build
# Build release binary (optimized)
cargo build --release
# Run tests
cargo test
# Format code
cargo fmt
# Lint code
cargo clippyThe compiled binary will be in target/release/dev (or target/debug/dev.exe on Windows).
The same checks CI runs are bundled into cargo xtask ci. It runs cargo fmt --check, cargo clippy -- -D warnings, cargo test, and enforces an 80% line-coverage minimum. Install the helper once and use it before every commit:
cargo install cargo-llvm-cov # coverage backend
cargo xtask ci # runs the full suite# Run the CLI directly
cargo run -- <COMMAND>
# Run a specific test
cargo test test_name
# Generate and view documentation
cargo doc --no-deps --open
# Check code without building
cargo check
# View project dependencies
cargo tree
# Open the HTML coverage report
cargo coverage
# Print a one-line coverage summary
cargo coverage-summarydev-cli/
├── src/
│ ├── main.rs # Application entry point (thin binary)
│ ├── lib.rs # Library crate root (shared by tests)
│ ├── cli.rs # CLI argument parsing (Clap)
│ ├── config.rs # Configuration management
│ ├── onboarding.rs # First-run interactive wizard
│ ├── startup.rs # Startup orchestration
│ ├── scanner.rs # Repository discovery
│ ├── commands/ # Command implementations
│ ├── ide/ # IDE detection and launching
│ ├── models/ # Data models
│ └── utils/ # Shared helpers (path display)
├── tests/ # Integration tests (one file per command)
├── docs/ # User and contributor documentation
├── xtask/ # Dev tooling (cargo xtask)
├── Cargo.toml # Workspace manifest
├── README.md # This file
├── ARCHITECTURE.md # Architecture and design
├── CONTRIBUTING.md # Contributor guide
├── CHANGELOG.md # Version history
└── .claude/ # Agent instructions (CLAUDE.md, AGENTS.md)
For detailed project structure documentation, see docs/project-structure.md.
Complete documentation is available in the docs/ directory:
- Getting Started — Setup and first steps
- Project Structure — Complete file reference
- Architecture — System design and module organization
- Rust for dev-cli — Learn Rust through this project
- CLI Design — How the CLI parser works
- Configuration — Configuration file format and schema
- IDE System — IDE detection algorithm
- Testing — Testing philosophy and practices
- Style Guide — Coding standards
- Roadmap — Future direction
Generate and view the auto-generated Rust documentation:
cargo doc --no-deps --openThis opens the rustdoc site showing all APIs with examples.
dev-cli follows a layered architecture:
See ARCHITECTURE.md for more details.
We welcome contributions! Please see CONTRIBUTING.md for more details.
- Fork and clone the repository
- Run
git config core.hooksPath .githooksto configure pre-commit hook - Create a feature branch —
git checkout -b feature/my-feature(branch names must match^(feature|fix|docs|refactor|chore)/<kebab-case>$) - Make changes and add tests under
tests/(no tests insidesrc/) - Run the full check —
cargo xtask ci - Commit with a clear message — follow conventional commits
- Push and create a PR
- Format:
cargo fmt(enforced via CI) - Lint:
cargo clippy -- -D warnings(enforced via CI) - Tests: All tests must pass (enforced via CI)
- Coverage: Lines ≥ 80% via
cargo xtask ci(enforced via CI) - Docs: Public APIs must have rustdoc comments, modules must have
//!headers - No
unwrap()in production code — use?with.context(...)
This project is licensed under the MIT License. See LICENSE file for details.
- Documentation: See the docs/ directory
- Architecture: Read ARCHITECTURE.md
- Issues: Report bugs on GitHub
- Discussions: Open a GitHub discussion for questions
Built with ❤️ in Rust