monox

module
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 22, 2025 License: MIT

README ΒΆ

monox

Polyglot Monorepo Management for Modern Stacks

Features β€’ Installation β€’ Quick Start β€’ Stack Guides β€’ Commands β€’ Configuration β€’ Security β€’ Contributing


monox is a high-performance monorepo tool written in Go. It blends the developer experience of Nx, the rigor of Bazel, and the speed of Turborepo while staying truly polyglot. Discover projects automatically, run tasks in parallel, and ship faster with hermetic caching.

Build once. Cache everywhere. Ship every stack with one binary.

Beta notice: monox is currently in public beta. Advanced features such as remote/cloud cache backends and distributed execution are still being validatedβ€”please test in non-production environments before rolling out widely.

✨ Features

Core platform
Capability Details
Performance Single static binary (Go) with zero runtime dependencies
Smart cache Content-addressable cache with local + remote backends (S3, GCS)
Graph brain Automatic dependency graph + Bazel-like queries (deps, rdeps, allpaths)
Parallelism Task scheduler that respects dependencies and boundaries
Affected mode Git-based change detection for incremental CI
Polyglot engine First-class Go, Python, React, Angular, Next.js with plugin SDK for more
Developer experience
  • monox init to scaffold workspaces with sensible defaults
  • monox generate for stack-specific blueprints
  • monox graph --dot for DOT/JSON graphs that plug into any viz
  • monox watch for continuous rebuild/test
  • VS Code extension: project tree, task runner, generators, cache controls
Enterprise extras
  • Module boundary linting with tag rules
  • Remote execution hooks
  • SBOM + container builds via GoReleaser
  • Signed artifacts, Homebrew/Scoop taps, Docker images, and GHCR publishing
Feature comparison
Capability monox Nx Turborepo Bazel
Single static binary βœ… ❌ ❌ ❌
Polyglot (Go, Python, JS) βœ… ⚠️ (JS-first) ⚠️ (JS-first) βœ…
Automatic project discovery βœ… βœ… βœ… ❌
Remote cache (S3/GCS) βœ… (beta) βœ… βœ… βœ…
Module boundary linting βœ… βœ… ❌ βœ…
Bazel-style query language βœ… ⚠️ limited ❌ βœ…
Code generators βœ… βœ… ❌ ❌
VS Code extension βœ… βœ… ❌ ❌
Hermetic sandboxing βœ… ❌ ❌ βœ…
Distributed execution hooks βœ… ⚠️ cloud ❌ βœ…

Legend: βœ… = native, ⚠️ = partial/limited, ❌ = missing.


πŸ“¦ Installation

Method Command
Homebrew brew install deadlock-labs/tap/monox
Go toolchain go install github.com/deadlock-labs/monox/cmd/monox@latest
Scoop (Windows) scoop bucket add monox https://github.com/deadlock-labs/scoop-bucket.git && scoop install monox
Binaries Download from Releases

Build from source:

git clone https://github.com/deadlock-labs/monox.git
cd monox
go build -o monox ./cmd/monox
sudo mv monox /usr/local/bin/

πŸš€ Quick Start

monox init                     # create workspace config
monox list                     # discover projects
monox run build                # run build everywhere
monox run test --affected=main # only changed projects
monox graph --dot | dot -Tsvg  # visualize dependencies
monox generate go:app api      # scaffold service

🧱 Stack Guides

Go
monox generate go:app api-service --tags=backend,api
monox generate go:lib shared-utils --directory=libs
  • Auto-detects modules, replace directives, CGO
  • Tasks inferred for build, test, vet, lint
  • Cross-compilation ready via GoReleaser profile
  • Sample structure: apps/api-service/{main.go,project.yaml}
Python
monox generate python:app ml-service --package ml_service
monox generate python:lib data-utils --directory=libs
  • Supports Poetry, pip, pipenv, uv
  • Inferred tasks: pytest, mypy, ruff, black
  • Virtualenv isolation with .venv per project
  • Dependency graph built from pyproject, requirements, imports
React
monox generate react:app dashboard --style=tailwind --typescript
monox generate react:lib ui-kit --publishable
  • Vite or Webpack bundlers
  • Tailwind, CSS Modules, Styled Components presets
  • Vitest + Testing Library wired in
  • ESLint + Prettier configs shared via workspace generators
Next.js
monox generate next:app website --app-router --style=tailwind
monox generate next:app legacy --app-router=false
  • Next 14 with App Router by default (Pages optional)
  • Turbopack-ready dev server tasks
  • API routes + middleware templates
  • SWC config optimized for monorepo builds
Angular
monox generate angular:app admin --routing --style=scss
monox generate angular:lib shared-ui --publishable
  • Standalone components (Angular 17+) or NgModules
  • ESLint, Karma/Jest, Cypress optional tasks
  • Strict TypeScript config and style linting
  • Nx-compatible project.json for easy migration

πŸ“‹ Commands

Command Purpose
monox init Bootstrap workspace config
monox list See detected projects and tasks
monox run <task> Run tasks with caching/parallelism
monox affected Calculate impacted projects since git refs
monox graph Print dependency graph (ascii/json/dot)
monox generate Scaffold stacks (go/python/react/next/angular)
monox watch Re-run tasks on file change
monox cache Inspect/clean caches
monox query Bazel-style graph queries
monox lint Enforce module boundaries
monox migrate Dependency upgrade insights

βš™οΈ Configuration

Workspace file (monox.yaml):

version: 1
name: my-monorepo

discovery:
  include:
    - "apps/*"
    - "libs/*"
  exclude:
    - "node_modules"
    - ".git"

cache:
  enabled: true
  local: .monox/cache
  remote:
    type: s3
    bucket: my-monox-cache
    region: us-east-1

parallel: 0

globalInputs:
  - monox.yaml
  - package-lock.json

targetDefaults:
  build:
    dependsOn: ["^build"]
    cache: true
  test:
    dependsOn: ["build"]

Project file (project.yaml):

name: api-service
type: application
tags: [backend, type:app]

tasks:
  build:
    command: go
    args: ["build", "-o", "bin/api", "./cmd/api"]
    inputs: ["**/*.go", "go.mod", "go.sum"]
    outputs: ["bin"]
  test:
    command: go
    args: ["test", "./..."]

Remote cache examples are in docs/cache.md (coming soon).


πŸ” Security

  • Report vulnerabilities via SECURITY.md
  • Sign releases with GoReleaser cosign integration
  • CI runs govulncheck, npm audit, pip-audit

🀝 Contributing

We love contributions! Read CONTRIBUTING.md then:

git clone https://github.com/deadlock-labs/monox.git
cd monox
go test ./...
monox run lint

Open a PR with clear description, tests, and documentation updates. See CODE_OF_CONDUCT.md for community standards.


πŸ“„ License

This project is licensed under the MIT License.


Built with care by the monox community β€’ Star us

Directories ΒΆ

Path Synopsis
cmd
monox command
Package main is the entry point for the monox CLI.
Package main is the entry point for the monox CLI.
internal
boundaries
Package boundaries provides module boundary enforcement for monox.
Package boundaries provides module boundary enforcement for monox.
cache
Package cache provides fine-grained file-level caching for monox.
Package cache provides fine-grained file-level caching for monox.
cli
Package cli provides the affected command for monox.
Package cli provides the affected command for monox.
config
Package config handles loading and validation of monox configuration files.
Package config handles loading and validation of monox configuration files.
distributed
Package distributed provides distributed task execution for monox.
Package distributed provides distributed task execution for monox.
generators
Package generators provides code generation for monox.
Package generators provides code generation for monox.
generators/angular
Package angular provides generators for Angular applications and libraries.
Package angular provides generators for Angular applications and libraries.
generators/nextjs
Package nextjs provides generators for Next.js applications.
Package nextjs provides generators for Next.js applications.
generators/react
Package react provides generators for React applications and libraries.
Package react provides generators for React applications and libraries.
graph
Package graph provides affected project detection for monox.
Package graph provides affected project detection for monox.
plugins
Package plugins provides a plugin system for monox.
Package plugins provides a plugin system for monox.
plugins/golang
Package golang provides the Go language plugin for monox.
Package golang provides the Go language plugin for monox.
plugins/node
Package node provides plugin support for Node.js/TypeScript projects.
Package node provides plugin support for Node.js/TypeScript projects.
plugins/nodejs
Package nodejs provides the Node.js/TypeScript language plugin for monox.
Package nodejs provides the Node.js/TypeScript language plugin for monox.
plugins/python
Package python provides the Python language plugin for monox.
Package python provides the Python language plugin for monox.
runner
Package runner provides parallel task execution for monox.
Package runner provides parallel task execution for monox.
sandbox
Package sandbox provides hermetic build isolation for monox.
Package sandbox provides hermetic build isolation for monox.
version
Package version provides version information for monox.
Package version provides version information for monox.
workspace
Package workspace provides workspace discovery and management for monox.
Package workspace provides workspace discovery and management for monox.
pkg
api
Package api provides event types for the monox event system.
Package api provides event types for the monox event system.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL