monorepo-meta-0.6.1 is not a library.
Meta - Monorepo Task Orchestrator
One command to rule them all
Meta orchestrates Turborepo, Cargo, and Bacon in tmux for polyglot monorepos. Stop juggling multiple terminals - let meta manage your dev environment.
Why Meta?
Modern monorepos use multiple tools: Turborepo for TypeScript, Cargo for Rust, Bacon for hot-reload. Meta unifies them under one CLI with proper tmux orchestration.
Quick Start
# 1. Validate setup
# 2. Start all dev servers in tmux
# 3. Navigate: Ctrl+B then arrows | Detach: Ctrl+B then D
Features
- Tmux Orchestration - Each project in its own pane with full TUI
- Smart Routing - Turborepo from root, Bacon/Cargo from project directory
- Per-Project Logging - Stdout captured to
.meta/logs/<project>.log - Multi-Workspace - Run meta in multiple directories without conflicts
- Claude Code Integration - AI skill for natural language control
- Zero Config - Auto-detects projects, generates
meta.toml
CLI Reference
| Command | Description |
|---|---|
meta dev |
Start all dev servers in tmux |
meta dev -p api web |
Start specific projects only |
meta dev:stop |
Stop all dev processes |
meta status |
Show running processes and logs |
meta logs <project> |
View project logs (-f to follow) |
meta sessions |
List all active meta sessions |
meta build [--prod] |
Build all projects |
meta test |
Run all tests |
meta run <task> |
Run any task (fmt, clippy, audit) |
meta doctor |
Validate configuration |
meta init |
Generate meta.toml |
Configuration
# meta.toml
= "1"
[]
= "My Monorepo"
[]
= true
= "bacon"
= ["rust"]
[]
= true
= "turbo"
= ["typescript"]
[]
= "rust"
= "apps/api"
[]
= { = "bacon", = "run-long" }
= { = "cargo", = "build --release" }
[]
= "next"
= "apps/web"
[]
= { = "turborepo", = "run dev --filter=@org/web" }
Bacon Logging
For bacon projects to write logs, configure your bacon.toml to tee output:
[]
# Tee output to centralized log file
= ["sh", "-c", "mkdir -p ../../.meta/logs && cargo run --color always 2>&1 | tee ../../.meta/logs/api.log"]
= true
# Export errors/warnings to centralized location
[]
= true
= "../../.meta/logs/api-locations"
= "{kind}|{path}:{line}:{column}|{message}"
Documentation
- User Guide - Daily workflow, tmux navigation, troubleshooting
- Standalone Setup - Add meta to your own monorepo
- Contributing - Development setup and guidelines
Changelog
v0.6.1 (Current)
- Bacon logging fix - bacon jobs can now tee output to log files
- Meta skips outer tee for bacon (avoids TUI escape code capture)
- Centralized log location for multi-bacon monorepos
v0.6.0
- Claude Code skill with decision trees and output parsing
- Multi-instance support (directory-based session names)
meta sessionscommand- Fixed process detection via tmux pane queries
v0.5.0
- Per-project log capture to
.meta/logs/<project>.log meta logscommand with--followand--lines- Log rotation at 10MB
v0.4.1
meta statuscommand for process monitoring- Lifecycle logging (START/EXIT/RESTART events)
- Binary staleness detection
v0.3.1
meta dev:stopcommand- Improved tmux navigation guide
v0.3.0
- Published to crates.io
- Custom pane titles
v0.2.1
- Tmux orchestration
- Multiple bacon instances with full TUI
meta doctorvalidation
Roadmap
v0.7.0 (Next)
- Session save/restore
- Environment support (dev, staging, prod)
- Project dependency ordering
Future
- Remote execution (SSH)
- Custom tool plugins
- CI/CD integration
Development
License
MIT
Built with Rust