{"_id":"@den-ai/muxa","_rev":"4-89fb1d5947cf350efbb0bb59902c15aa","name":"@den-ai/muxa","dist-tags":{"latest":"0.2.2"},"versions":{"0.0.1":{"name":"@den-ai/muxa","version":"0.0.1","keywords":["mprocs","concurrently","parallel","concurrent","terminal","multiplexer","monorepo","workspace"],"author":"","license":"MIT","_id":"@den-ai/muxa@0.0.1","maintainers":[{"name":"den.ai","email":"denkasyanov@icloud.com"}],"homepage":"https://github.com/dendotai/muxa#readme","bugs":{"url":"https://github.com/dendotai/muxa/issues"},"bin":{"muxa":"dist/index.js"},"dist":{"shasum":"c2d6f95f365451f7ef95204219e858a25d89fe4d","tarball":"https://registry.npmjs.org/@den-ai/muxa/-/muxa-0.0.1.tgz","fileCount":3,"integrity":"sha512-vtuNvCSchDfim+7w9xecUgsYuS3pa475oMK35CE5UbS8ItirdcVjPU48+uKTSGnLZXFuhtFh/M8NWEGNzAfWPA==","signatures":[{"sig":"MEUCICHtjP2DpkHpxS/G1sPcDzFcCEyshHiI5nJIfdefwOyeAiEA+m1VzbXUVIAhjl1jJAW9kdh06uzMlkDwoWW46f/ia20=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1506},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"scripts":{"build":"bun build ./src/index.ts --outdir ./dist --target node","prepublishOnly":"bun run build"},"_npmUser":{"name":"den.ai","email":"denkasyanov@icloud.com"},"repository":{"url":"git+https://github.com/dendotai/muxa.git","type":"git"},"_npmVersion":"10.9.2","description":"A concurrently-like CLI wrapper for mprocs terminal multiplexer","directories":{},"_nodeVersion":"22.15.0","_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/muxa_0.0.1_1752950566274_0.821495635813525","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@den-ai/muxa","version":"0.0.2","keywords":["concurrently","parallel","concurrent","terminal","multiplexer","monorepo","workspace","mprocs"],"author":"","license":"MIT","_id":"@den-ai/muxa@0.0.2","maintainers":[{"name":"den.ai","email":"denkasyanov@icloud.com"}],"homepage":"https://github.com/dendotai/muxa#readme","bugs":{"url":"https://github.com/dendotai/muxa/issues"},"bin":{"muxa":"dist/index.js"},"dist":{"shasum":"6223a4f0b5e6d0561c648b0d91e8c594e50e6ae9","tarball":"https://registry.npmjs.org/@den-ai/muxa/-/muxa-0.0.2.tgz","fileCount":3,"integrity":"sha512-9kczuGZy7iKRz2O5d/8djsh10vxM48KdhZ3wYYRY4ffVuln+Clxjqk3vL92o24y0VKhN/M4ctE+oBigRiL92lQ==","signatures":[{"sig":"MEYCIQCLb2yfeFYX005c1NwLC0/40R32aEM5SeFVVbQeQOlQ6AIhAIIkYVX9X6yK9uBTxb6cH7oP6Xr35H+kzZ+uuIZzMXAl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":82268},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"scripts":{"build":"bun build ./src/index.ts --outdir ./dist --target node","prepublishOnly":"bun run build"},"_npmUser":{"name":"den.ai","email":"denkasyanov@icloud.com"},"repository":{"url":"git+https://github.com/dendotai/muxa.git","type":"git"},"_npmVersion":"10.9.2","description":"A concurrently-like CLI wrapper for mprocs terminal multiplexer","directories":{},"_nodeVersion":"22.15.0","dependencies":{"mprocs":"^0.7.3","commander":"^14.0.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/muxa_0.0.2_1752952351363_0.47443472214041504","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@den-ai/muxa","version":"0.2.1","keywords":["concurrently","parallel","concurrent","terminal","multiplexer","monorepo","workspace","mprocs"],"author":"","license":"MIT","_id":"@den-ai/muxa@0.2.1","maintainers":[{"name":"den.ai","email":"denkasyanov@icloud.com"}],"homepage":"https://github.com/dendotai/muxa#readme","bugs":{"url":"https://github.com/dendotai/muxa/issues"},"bin":{"muxa":"dist/index.js"},"dist":{"shasum":"dd3a714ab4472129215b2e31e8a82086308acc2a","tarball":"https://registry.npmjs.org/@den-ai/muxa/-/muxa-0.2.1.tgz","fileCount":90,"integrity":"sha512-4JabmqZynmCC3TaKoXu1UkUE6iJDkzIwrh1DvTH2yCk0nbqK68bmSCx+DzVEwpfVGxisc+jawKOM7Kbn46YFAg==","signatures":[{"sig":"MEUCIQCPAAnHQhxPG1PthwQ5FN6khvD0cEzp4vYGHRyOFJDr6wIgVFimqcHhIXbj174pIASPsPR6Eax12F84S+miyG6HqBg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":110098},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"gitHead":"978908684b5b0a7a0ff8d7d06189d885da4b6572","scripts":{"lint":"bun run lint:ts && bun run lint:md","test":"MUXA_TEST_MODE=true bun test","build":"bun build ./src/index.ts --outdir ./dist --target node && tsc --emitDeclarationOnly","lint:md":"markdownlint '**/*.md' --ignore node_modules","lint:ts":"eslint .","lint:fix":"bun run lint:ts --fix && bun run lint:md --fix","typecheck":"tsc --noEmit --skipLibCheck","test:clean":"MUXA_TEST_MODE=true CI=true bun test --bail","test:watch":"MUXA_TEST_MODE=true bun test --watch","prepublishOnly":"bun run build && bun run test"},"_npmUser":{"name":"den.ai","email":"denkasyanov@icloud.com"},"repository":{"url":"git+https://github.com/dendotai/muxa.git","type":"git"},"_npmVersion":"10.8.2","description":"Run your entire dev stack in multiple virtual terminals with one concise command instead of long config files. Built-in monorepo support, preserved interactivity, and clean output.","directories":{},"_nodeVersion":"20.19.4","dependencies":{"mprocs":"^0.7.3"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.31.0","@types/bun":"^1.0.0","typescript":"^5.8.3","markdownlint-cli":"^0.45.0","@typescript-eslint/parser":"^8.38.0","@total-typescript/tsconfig":"^1.0.4","@typescript-eslint/eslint-plugin":"^8.38.0"},"_npmOperationalInternal":{"tmp":"tmp/muxa_0.2.1_1753685088549_0.9480049260991779","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@den-ai/muxa","version":"0.2.2","description":"Run your entire dev stack in multiple virtual terminals with one concise command instead of long config files. Built-in monorepo support, preserved interactivity, and clean output.","main":"dist/index.js","types":"dist/index.d.ts","bin":{"muxa":"dist/index.js"},"scripts":{"build":"bun build ./src/index.ts --external mprocs --outdir ./dist --target node && tsc --emitDeclarationOnly","test":"MUXA_TEST_MODE=true bun test","test:clean":"MUXA_TEST_MODE=true CI=true bun test --bail","test:watch":"MUXA_TEST_MODE=true bun test --watch","typecheck":"tsc --noEmit --skipLibCheck","prepublishOnly":"bun run build && bun run test","lint:ts":"eslint .","lint:md":"markdownlint '**/*.md' --ignore node_modules","lint":"bun run lint:ts && bun run lint:md","lint:fix":"bun run lint:ts --fix && bun run lint:md --fix"},"keywords":["concurrently","parallel","concurrent","terminal","multiplexer","monorepo","workspace","mprocs"],"author":"","license":"MIT","devDependencies":{"@total-typescript/tsconfig":"^1.0.4","@types/bun":"^1.0.0","@typescript-eslint/eslint-plugin":"^8.38.0","@typescript-eslint/parser":"^8.38.0","eslint":"^9.31.0","markdownlint-cli":"^0.45.0","typescript":"^5.8.3"},"engines":{"node":">=16.0.0"},"repository":{"type":"git","url":"git+https://github.com/dendotai/muxa.git"},"dependencies":{"mprocs":"^0.7.3"},"_id":"@den-ai/muxa@0.2.2","gitHead":"af4961943e397e51ad20250751e6f022207779a3","bugs":{"url":"https://github.com/dendotai/muxa/issues"},"homepage":"https://github.com/dendotai/muxa#readme","_nodeVersion":"20.19.4","_npmVersion":"10.8.2","dist":{"integrity":"sha512-hSGn3knAiUiCmN8/7+YM/dSPqPx5ts80nTuDOZtharTT1x4jxMKWu1AnkI+hb/drtvO3xGrKp4/H5BOCTs55WQ==","shasum":"e91037d81ad0d71d3d7bc94760805b54e519098c","tarball":"https://registry.npmjs.org/@den-ai/muxa/-/muxa-0.2.2.tgz","fileCount":90,"unpackedSize":107430,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIBmUDXAMvfS2nN8ZPctyzF6Y/oeEsqRsPtBfc9dsQyj6AiEAgwJ+A6nJs1yU2WcucC4gb8JAoPBgtV/+Ir5cNb3btWk="}]},"_npmUser":{"name":"den.ai","email":"denkasyanov@icloud.com"},"directories":{},"maintainers":[{"name":"den.ai","email":"denkasyanov@icloud.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/muxa_0.2.2_1753686497946_0.4068310287310122"},"_hasShrinkwrap":false}},"time":{"created":"2025-07-19T18:42:46.202Z","modified":"2025-07-28T07:08:18.352Z","0.0.1":"2025-07-19T18:42:46.456Z","0.0.2":"2025-07-19T19:12:31.566Z","0.2.1":"2025-07-28T06:44:48.740Z","0.2.2":"2025-07-28T07:08:18.121Z"},"bugs":{"url":"https://github.com/dendotai/muxa/issues"},"license":"MIT","homepage":"https://github.com/dendotai/muxa#readme","keywords":["concurrently","parallel","concurrent","terminal","multiplexer","monorepo","workspace","mprocs"],"repository":{"type":"git","url":"git+https://github.com/dendotai/muxa.git"},"description":"Run your entire dev stack in multiple virtual terminals with one concise command instead of long config files. Built-in monorepo support, preserved interactivity, and clean output.","maintainers":[{"name":"den.ai","email":"denkasyanov@icloud.com"}],"readme":"# muxa\n\n```text\n                                                ┌───────┬────────────────────────────────────┐\n  ███╗   ███╗  ██╗   ██╗  ██╗  ██╗   █████╗     │  api  │ VITE v5.4.19  ready in 691 ms      │\n  ████╗ ████║  ██║   ██║  ╚██╗██╔╝  ██╔══██╗    ├───────┤                                    │\n  ██╔████╔██║  ██║   ██║   ╚███╔╝   ███████║    │ [web] │ ➜  Local:   http://localhost:5173/ │\n  ██║╚██╔╝██║  ██║   ██║   ██╔██╗   ██╔══██║    ├───────┤ ➜  Network: use --host to expose   │\n  ██║ ╚═╝ ██║  ╚██████╔╝  ██╔╝ ██╗  ██║  ██║    │  db   │ ➜  press h + enter to show help    │\n  ╚═╝     ╚═╝   ╚═════╝   ╚═╝  ╚═╝  ╚═╝  ╚═╝    └───────┴────────────────────────────────────┘\n```\n\nRun your entire dev stack in multiple virtual terminals with one concise command instead of long config files. Built-in monorepo support, preserved interactivity, and clean output.\n\n```bash\n# Before:\nconcurrently -n \"api,web,db\" \"npm run dev --workspace=api\" \"npm run dev --workspace=web\" \"docker-compose up postgres\"\n\n# After:\nmuxa -s api dev -s web dev -c \"docker-compose up postgres\" db\n```\n\n## Why muxa?\n\nWhen developing in a monorepo with multiple services, you need to run multiple processes simultaneously. While `concurrently` provides a simple CLI interface, it has output formatting issues and loses interactive features. `mprocs` handles output better but requires complex shell syntax or configuration files.\n\n`muxa` combines the best of both worlds:\n\n- Simple CLI interface like concurrently\n- Superior output handling from mprocs\n- Built-in workspace support for monorepos\n- Preserves interactive features (Expo QR codes, Vite shortcuts, etc.)\n- No configuration files required\n\n## Installation\n\n```sh\n# bun\nbun install -g @den-ai/muxa\n\n# pnpm\npnpm add -g @den-ai/muxa\n\n# npm\nnpm install -g @den-ai/muxa\n\n# yarn\nyarn global add @den-ai/muxa\n```\n\n## Usage\n\n### Basic Usage\n\nRun multiple commands in parallel:\n\n```sh\n# Basic mode - direct commands\nmuxa 'npm run dev' 'npm run test:watch'\n\n# Advanced mode with -c flags\nmuxa -c 'npm run dev' -c 'npm run test:watch'\n\n# With custom process names\nmuxa -c 'npm run dev' api -c 'npm run test:watch' tests\n\n# Process names are optional\nmuxa -c 'npm run dev' api -c 'npm run test'\nmuxa -c 'npm run dev' -c 'npm run test' tests\n```\n\n### Workspace Script Support\n\nRun package.json scripts from specific workspace packages without complex shell syntax:\n\n```sh\n# Run scripts in specific packages\nmuxa -s backend dev -s frontend start\n\n# With custom names\nmuxa -s backend dev api -s frontend start web\n\n# Using different package identifiers\nmuxa -s @myapp/backend dev        # by package.json name\nmuxa -s packages/backend dev      # by relative path\nmuxa -s backend dev               # by directory name (if unique)\n\n# Mix with regular commands\nmuxa -s backend dev -c 'echo \"Starting servers...\"'\n```\n\n### Run Commands in Workspace Directories\n\n```sh\n# Run arbitrary commands in workspace directories\nmuxa -w backend 'npm run dev' dev\nmuxa -w mobile 'npx expo start' expo\n```\n\n### Complex Commands\n\n```sh\n# Commands with shell operators\nmuxa -c 'npm run build && npm test' -c 'echo \"Done\" || exit 1'\n\n# Pass through mprocs options\nmuxa --hide-help -c 'npm run dev' -c 'npm run test'\n```\n\n## Command Line Options\n\n- `-c, --command <command> [name]` - Run arbitrary command with optional name\n- `-s, --script <package> <script> [name]` - Run package.json script from workspace\n- `-w, --workspace <package> <command> [name]` - Run command in workspace directory\n- `-h, --help` - Display help\n- `--version` - Display version\n- `workspaces` - List all detected workspace packages\n\n## Important Usage Notes\n\n### Argument Modes\n\n`muxa` supports two modes that cannot be mixed:\n\n1. **Basic mode** - Commands as direct arguments (no flags):\n\n   ```sh\n   muxa 'npm run dev' 'npm run test'\n   ```\n\n2. **Advanced mode** - Using flags (`-c`, `-s`, `-w`) for more control:\n\n   ```sh\n   muxa -c 'npm run dev' -c 'npm run test'\n   ```\n\n> [!IMPORTANT]  \n> You cannot mix these modes.\n\n```sh\n# ❌ This will error\nmuxa 'npm run dev' -c 'npm run test'\n\n# ✅ Use one mode consistently\nmuxa 'npm run dev' 'npm run test'\n# OR\nmuxa -c 'npm run dev' -c 'npm run test'\n```\n\n### Workspace Resolution\n\nWhen using `-s` or `-w`, `muxa` resolves packages in this order:\n\n1. Exact package.json name match (`@myapp/backend`)\n2. Relative path match (`packages/backend`, `./packages/backend`)\n3. Directory name match (`backend` - only if unambiguous)\n\nIf a directory name matches multiple packages, you'll get an error with suggestions:\n\n```text\nError: Ambiguous package identifier 'backend'\nFound multiple matches:\n  - @myapp/backend (packages/backend)\n  - @tools/backend (tools/backend)\nPlease use the full package name or path.\n```\n\n### Shell Wrapping\n\nCommands are automatically wrapped with `sh -c` when they contain:\n\n- Shell operators (`&&`, `||`, `|`, `;`, `>`, `<`)\n- Glob patterns (`*`, `?`, `[...]`)\n- Environment variables (`$VAR`)\n\nWorkspace commands (`-s` and `-w`) are always wrapped to handle directory changes.\n\n## Examples\n\n### Monorepo Development\n\n```sh\n# Run backend API and frontend dev servers\nmuxa -s apps/api dev -s apps/web dev\n\n# Run with custom names for cleaner output\nmuxa -s apps/api dev backend -s apps/web dev frontend\n\n# Include a database setup command\nmuxa -c 'docker-compose up' db -s apps/api dev api\n```\n\n### Testing Workflow\n\n```sh\n# Run tests in watch mode alongside development\nmuxa -s backend dev -s backend test:watch tests\n\n# Run tests in different workspaces\nmuxa -s backend test -s frontend test\n```\n\n### Build Pipeline\n\n```sh\n# Build multiple packages in parallel\nmuxa -s shared build -s backend build -s frontend build\n\n# With conditional execution\nmuxa -c 'npm run lint && npm run build' -c 'npm test || exit 1'\n```\n\n## Comparison with Alternatives\n\n### vs concurrently\n\n✅ Preserves interactive features (Expo QR codes, Vite shortcuts)  \n✅ Better output formatting  \n✅ Built-in workspace support  \n✅ Cleaner syntax for complex commands\n\n### vs mprocs (direct usage)\n\n✅ Simple CLI interface  \n✅ No configuration files needed  \n✅ Automatic shell wrapping  \n✅ Workspace-aware commands\n\n### vs npm-run-all / yarn workspaces run\n\n✅ Works with any package manager  \n✅ More flexible command composition  \n✅ Better terminal UI with mprocs  \n✅ Mix workspace and non-workspace commands\n\n## Requirements\n\n- Node.js >= 16.0.0\n- mprocs (automatically installed as dependency)\n\n## Contributing\n\nContributions are welcome! Please check out the [GitHub repository](https://github.com/dendotai/muxa).\n\n## License\n\nMIT\n","readmeFilename":"README.md"}