A fast command-line tool for managing multi-service development stacks with Docker, MongoDB, and microservices.
This CLI provides professional tooling for complex development environments:
- Live monitoring dashboard - Real-time health checks for all services (3-second refresh)
- Docker stack management - Start/stop/rebuild services with auto-detection
- Safe deployments - MongoDB data sync with confirmations and tunnel verification
- Beautiful TUI - Professional terminal UI powered by Charm Bracelet
This is my DevOps command center for stevengregory.io. A tool managing my full-stack application: Angular frontend, Go service layer, and MongoDB database. Built for speedy local development and deployment of decoupled, multi-service stacks.
- Docker Desktop (for
devcommand) - MongoDB (local or remote access)
- Docker Compose (for service orchestration)
brew tap stevengregory/musing
brew install musingUpgrading:
brew upgrade musingLive dashboard with real-time health checks.
musing monitorFeatures:
- Real-time service health monitoring (3-second refresh)
- Color-coded status indicators for each service
- Organized sections: Docker → Database → API Services → Frontend → SSH Tunnels
- Keyboard controls:
q,Ctrl+C, orEscto exit
Manage the development stack.
musing dev # Start all services
musing dev --rebuild # Force rebuild images
musing dev --logs # Start and follow logs
musing dev --stop # Stop all servicesFeatures:
- Auto-detects and starts Docker Desktop if needed
- Validates required repositories exist
- Health checks for MongoDB and frontend
- Progress indicators for long operations
Deploy MongoDB collections to dev or production.
musing deploy # All collections to dev
musing deploy news # Specific collection to dev
musing deploy --env prod # All to prod (with confirmation)
musing deploy news -e prod # Specific collection to prodHow it works:
- Auto-discovers all
.jsonfiles in your data directory - Collection names derived from filenames (e.g.,
news.json→newscollection) - Automatically detects JSON arrays vs. objects
- No manual configuration needed
Production safety:
- Interactive confirmation required
- Verifies SSH tunnel connectivity
- Clear warnings about data overwrite
Check the installed version.
musing --versionCreate a .musing.yaml file in your project root to define your stack:
services:
# Frontend
- name: Angular
port: 3000
type: frontend
# API Services
- name: my-api
port: 8080
type: api
# Database configuration
database:
type: MongoDB
name: mydb
devPort: 27018
prodPort: 27019
dataDir: data
# Optional: Production deployment settings
production:
server: root@your-server.com # SSH server for production access
remoteDBPort: 27017 # Remote database port (typically 27017 for MongoDB)Project-agnostic design means you can adapt it for any stack:
- Works with any frontend framework (Angular, React, Vue, etc.)
- Backend-agnostic (Go, Node, Python microservices)
- Service configurations in
internal/config/config.go - Docker Compose integration
- Port-based health checking (framework-independent)
- MongoDB deployment patterns
- SSH tunnel support for remote databases
Key benefits:
- Fast startup (1-3ms)
- Type-safe Go prevents runtime errors
- Professional terminal UI with Bubble Tea
- Single binary with zero dependencies
# Run without installing
go run ./cmd/musing monitor
go run ./cmd/musing dev
# Build for development (with version detection)
make build
# Manage dependencies
go mod tidymusing-cli/
├── cmd/
│ ├── musing/
│ │ └── main.go # Entry point
│ ├── dev.go # Dev command
│ ├── deploy.go # Deploy command
│ └── monitor.go # Monitor command
├── internal/
│ ├── config/ # Service configs & ports
│ ├── docker/ # Docker operations
│ ├── health/ # Health checks
│ ├── mongo/ # MongoDB deployment
│ └── ui/ # Styled output & prompts
Tech Stack:
- Go (fast, type-safe, single binary)
- Bubble Tea (interactive TUI)
- Lip Gloss (terminal styling)
- Huh (confirmation prompts)
See CLAUDE.md for detailed architecture and development guidelines.
MIT

