Meta - Monorepo Task Orchestrator
One command to rule them all 🚀
Meta is a unified task orchestrator for modern monorepos. Stop juggling Turborepo, cargo, and bacon commands - let meta orchestrate multiple bacon instances and turborepo tasks in tmux automatically.
📦 Install from crates.io: cargo install monorepo-meta
Why Meta?
Modern monorepos use multiple specialized tools:
- 🟦 Turborepo - TypeScript/Next.js (with Vercel remote caching)
- 🦀 Cargo - Rust builds and tests
- 🥓 Bacon - Rust hot-reload development
- 🌙 Moon - Polyglot task running (optional)
The Problem: Context switching, different CLI syntax, no unified view.
The Solution: Meta orchestrates all tools under one interface.
Features
- ✅ Smart Routing - Automatically selects the right tool for each project
- ✅ Unified CLI - One command for all tasks (
meta dev,meta build,meta test) - ✅ Multiple Bacon TUIs - Each Rust project gets full interactive bacon TUI in its own pane
- ✅ Tmux Orchestration - All processes in separate panes with native terminal access
- ✅ Turborepo Integration - Workspace-aware task execution from root directory
- ✅ Zero Config - Works with sensible defaults, configurable via
meta.toml - ✅ Built-in Validation -
meta doctorchecks your entire setup - ✅ Detach/Reattach - Keep dev servers running in background
- ✅ Stop All Sessions -
meta dev:stopkills all dev processes instantly - ✅ Hot Reload Built-in - Bacon and Turbo handle file watching natively
- ✅ Custom Pane Titles - Each tmux pane shows project name
Installation
# Install from crates.io (recommended)
# Or install from source
&&
For detailed setup in your own monorepo, see the Standalone Installation Guide.
Quick Start
📖 New to Meta? See the complete User Guide for detailed instructions, tmux navigation tips, and recording demos.
1. Verify Installation
Check that meta and your configuration are correct:
This will validate:
- ✅ All tools (bacon, cargo, turbo, tmux) are installed
- ✅ meta.toml configuration is valid
- ✅ All project paths exist
- ✅ Tasks are properly configured
2. Start Development
Run all dev servers with tmux:
This launches a tmux session with separate panes for each project:
- Each bacon instance runs with full interactive TUI
- Each turbo process runs from workspace root
- Press
Ctrl+BthenDto detach - Press
Ctrl+Cin each pane to stop
Run specific projects only:
3. Run Tasks
# Run any task across all projects
# Run on specific projects
How It Works
Tmux Integration
Meta uses tmux to run multiple bacon and turbo instances concurrently:
- Detects tmux - Automatically checks if tmux is installed
- Creates session - Launches
meta-devtmux session - Separate panes - Each project gets its own pane:
- Bacon projects:
cd apps/api && bacon run-long - Turbo projects:
turbo run dev --filter=@package/name
- Bacon projects:
- Full TUI - Each bacon instance runs with complete interactivity
- Easy navigation - Use tmux keys to switch between panes
Tool Routing
Meta automatically routes commands based on project type:
- Turborepo → Runs from workspace root with
--filter - Bacon/Cargo → Changes to project directory first
- Other tools → Configurable in meta.toml
Updating Meta
# From crates.io
# Check version
Configuration
Meta uses meta.toml for configuration:
[]
= "My Monorepo"
= "."
[]
= true
= "turbo"
= ["typescript"]
= ["dev", "build"]
[]
= true
= "bacon"
= ["rust"]
= ["dev"]
[]
= "rust"
= "apps/api"
[]
= { = "bacon", = "run-long" }
= { = "cargo", = "build --release" }
CLI Commands
meta init
Initialize meta.toml configuration file.
meta dev
Start development servers for all projects.
Options:
-p, --projects <NAMES>- Run specific projects only
Example:
# Run all projects
# Run only API and web
meta dev:stop
Stop all running tmux development sessions.
Example:
# Stop all dev servers
This will kill the meta-dev tmux session and all processes running within it.
meta build
Build all projects.
Options:
--prod- Production build-p, --projects <NAMES>- Build specific projects
Example:
# Development build
# Production build
# Build specific projects
meta test
Run tests for all projects.
Options:
-w, --watch- Watch mode (coming soon)
meta run <task>
Run a specific task across all projects (or selected projects).
Options:
-p, --projects <NAMES>- Run task for specific projects only
Examples:
# Run formatting check across all projects
# Run clippy only on the meta project itself
# Run security audit
# Auto-fix formatting
Common Tasks:
fmt- Check code formattingfmt-fix- Auto-format codeclippy- Lint code with zero warningsclippy-fix- Auto-fix lint issuesaudit- Security vulnerability auditcheck- Fast compile check without building
meta doctor
Validate your entire setup before starting development.
Checks:
- All required tools are installed (bacon, cargo, turbo, tmux)
- meta.toml configuration is valid
- All project paths exist
- Tasks are properly configured
- Turborepo command syntax is correct
Example:
# Output shows:
# ✓ Tool availability with versions
# ✓ Project validation
# ✓ Configuration validation
# ✓ Quick start suggestions
Demo
See Meta in action:
Demo showcases:
meta doctor- Configuration validationmeta dev- Tmux session launch with multiple bacon instances- Tmux navigation - Full interactive bacon TUI per project
- Turborepo integration - Workspace-aware execution
- Detach/reattach - Keep dev servers running in background
Recording Your Own Demos
Want to create a demo of Meta for documentation or social media?
Quick start:
See docs/launch/DEMO_SCRIPT.md for detailed recording instructions.
Architecture
meta/
├── src/
│ ├── cli.rs # CLI parsing (clap)
│ ├── config.rs # meta.toml loading
│ ├── adapters/ # Tool adapters
│ └── execution/ # Task execution & tmux orchestration
├── Cargo.toml
└── README.md
Comparison
| Tool | Purpose | Meta Advantage |
|---|---|---|
| mprocs/overmind | Process orchestrator | Native TTY per process, bacon TUI support, tool-aware routing |
| Turborepo | JS/TS monorepo | Multi-language support (Rust + TS), proper bacon integration |
| Just/Taskfile | Task runner | Tmux orchestration, detach/reattach, validation |
Roadmap
v0.1.0 ✅
- CLI with basic commands
- Configuration loading
- Tool adapters (turbo, cargo, bacon)
- Task routing
- Parallel execution
v0.2.1 ✅
- Tmux orchestration
- Multiple bacon instances with full TUI
- Turborepo workspace integration
- Built-in validation (doctor command)
- Detach/reattach support
- Tool-aware routing
v0.3.0 ✅
- Custom pane titles (each tmux pane shows project name)
- Clean documentation (no bun wrappers, direct meta commands)
- Published to crates.io (
cargo install monorepo-meta)
v0.3.1 (Current) ✅
-
meta dev:stopcommand to stop all tmux development sessions - Shared Rust config files at workspace root (rustfmt.toml, .clippy.toml, cargo-sort.toml)
- Improved tmux navigation guide with keyboard shortcuts
v0.4.0 (Next)
- Session management (save/restore pane layouts)
- Multiple environment support (dev, staging, prod)
- Project dependency awareness (start in order)
Future
- Remote execution (SSH to dev servers)
- Task execution metrics
- Custom tool adapters via plugins
- Integration with CI/CD pipelines
Development
# Run meta in development
# Run tests
# Build release binary
# Install locally
Quality Policy
Meta adheres to a strict zero-warning, zero-failure policy:
- ✅ All builds must complete without warnings
- ✅ All tests must pass
- ✅ Code formatted with
rustfmt - ✅ Linted with
clippy -- -D warnings - ✅ Security audit passes
- ✅ All quality gates enforced in CI/CD
Before committing:
# Run quality checks using meta itself (dogfooding!)
# Verify zero-warning build
Available Meta Commands (Dogfooding)
Meta uses itself for quality gates! All commands run from tooling/meta directory:
🤝 Contributing
All contributions must pass our quality gates:
Quality Gates Enforced
-
Code Formatting (
cargo fmt --check)- All code must be formatted with rustfmt
- Configuration in
rustfmt.toml
-
Linting (
cargo clippy -- -D warnings)- Zero clippy warnings allowed
- Configuration in
.clippy.toml
-
Testing (
cargo test)- All tests must pass
- Integration and unit tests
-
Security Audit (
cargo audit)- No known vulnerabilities
-
Cross-Platform (CI)
- Tests on Ubuntu, macOS, Windows
- Rust stable and beta
CI/CD Pipeline
Our GitHub Actions workflow (.github/workflows/meta-ci.yml) runs on every PR:
- ✅ Tests - On Ubuntu, macOS, Windows with stable and beta Rust
- ✅ Formatting Check - Ensures code is formatted
- ✅ Clippy Linting - Zero warnings policy
- ✅ Security Audit - Checks for vulnerabilities
- ✅ Build Artifacts - Produces binaries for all platforms
- ✅ Code Coverage - Tracks test coverage with Codecov
PR Checklist
Before submitting a PR:
- Run
make pre-commitsuccessfully - Add tests for new features
- Update documentation if needed
- Add entry to CHANGELOG.md (if exists)
- Ensure no new warnings or errors
- Verify builds on your platform
License
MIT
Credits
Inspired by:
Built with ❤️ in Rust