SkillAgentSearch skills...

carbon

Carbon is an open source ERP, MES and QMS for manufacturing. Perfect for complex assembly, contract manufacturing, high volume, and configure to order manufacturing.

Install / Use

claude mcp add crbnos -- npx -y github:crbnos/carbon

If the server publishes to npm under a different name, use that package instead — check the repo README.

About this skill
🔌

MCP Server

Model Context Protocol server

Quality Score

95/100

Supported Platforms

Claude Code
Claude Desktop
<p align="center"> <a href="https://carbon.ms"> <img width="auto" height="100" alt="Carbon Logo" src="https://github.com/user-attachments/assets/177634ca-5c37-43e2-8d55-1b9f490866d5" /> </a> </p> <p align="center"> The open core for manufacturing <br /> <br /> <a href="https://discord.gg/yGUJWhNqzy">Discord</a> · <a href="https://carbon.ms">Website</a> · <a href="https://docs.carbon.ms">Documentation</a> </p> </p> <p align="center"> <img src="https://img.shields.io/badge/Supabase-3ECF8E?style=for-the-badge&logo=supabase&logoColor=white" alt="Supabase" /> <img src="https://img.shields.io/badge/Typescript-1a67f3?style=for-the-badge&logo=react&logoColor=white" alt="Typescript" /> <img src="https://img.shields.io/badge/React-23272F?style=for-the-badge&logo=react&logoColor=white" alt="React" /> </p>

ERP Screenshot

MES Screenshot

Does the world need another ERP?

We built Carbon after years of building end-to-end manufacturing systems with off-the-shelf solutions. We realized that:

  • Modern, API-first tooling didn't exist
  • Vendor lock-in bordered on extortion
  • There is no "perfect ERP" because each company is unique

We built Carbon to solve these problems ☝️

Architecture

Carbon is designed to make it easy for you to extend the platform by building your own apps through our API. We provide some examples to get you started in the examples folder.

Carbon Functionality

Carbon Architecture

Features:

  • [x] ERP
  • [x] MES
  • [x] QMS
  • [x] Custom Fields
  • [x] Nested BoM
  • [x] Traceability
  • [x] MRP
  • [x] Configurator
  • [x] MCP Client/Server
  • [x] API
  • [x] Webhooks
  • [x] Accounting
  • [ ] Capacity Planning
  • [ ] Simulation
  • [ ] Full Roadmap

Technical highlights:

  • [x] Unified auth and permissions across apps
  • [x] Full-stack type safety (Database → UI)
  • [x] Realtime database subscriptions
  • [x] Attribute-based access control (ABAC)
  • [x] Role-based access control (Customer, Supplier, Employee)
  • [x] Row-level security (RLS)
  • [x] Composable user groups
  • [x] Dependency graph for operations
  • [x] Third-party integrations

Techstack

Codebase

The monorepo follows the Turborepo convention of grouping packages into one of two folders.

  1. /apps for applications
  2. /packages for shared code

/apps

| Package Name | Description | How to run | | ------------ | --------------- | --------------------------------------------------- | | erp | ERP Application | pnpm dev (boots stack + ERP via crbn up picker) | | mes | MES | pnpm dev (select MES in picker, or both) | | academy | Academy | pnpm dev:academy | | starter | Starter | pnpm dev:starter | | assembler | Geometry service (Rust): STEP → GLB + assembly motion planning | spawned by crbn up (needs a release binary — see Installation) |

pnpm dev runs the per-worktree dev CLI (crbn up). ERP and MES are first-class — the CLI boots the docker stack, applies migrations, regenerates types/swagger, and spawns the selected apps behind portless. The assembler geometry service is spawned too when its release binary is present. Academy and starter are standalone Turborepo entries.

/packages

| Package Name | Description | | ------------------- | -------------------------------------------------------------------------- | | @carbon/database | Database schema, migrations and types | | @carbon/documents | Transactional PDFs and email templates | | @carbon/ee | Integration definitions and configurations | | @carbon/config | Shared configuration (vitest, tsconfig, tailwind) across apps and packages | | @carbon/jobs | Background jobs and workers | | @carbon/logger | Shared logger used across apps | | @carbon/react | Shared web-based UI components | | @carbon/kv | Redis cache client | | @carbon/lib | Third-party client libraries (slack, resend) | | @carbon/stripe | Stripe integration | | @carbon/utils | Shared utility functions used across apps and packages |

Development

Setup

  1. Clone the repo into a public GitHub repository (or fork https://github.com/crbnos/carbon/fork). If want to make the repo private, you should acquire a commercial license to comply with the AGPL license.

    git clone https://github.com/crbnos/carbon.git
    
  2. Go to the project folder

    cd carbon
    

Make sure that you have Docker installed on your system since this monorepo uses the Docker for local development.

In addition you must configure the following external services:

| Service | Purpose | URL | | ------- | -------------------------- | -------------------------------------------------------------- | | Posthog | Product analytics platform | https://us.posthog.com/signup | | Stripe | Payments service | https://dashboard.stripe.com/login | | Resend | Email service | https://resend.com |

Posthog has a free tier which should be plenty to support local development. If you're self hosting and you don't want to use Posthog, it's pretty easy to remove the analytics.

Installation

First download and initialize the repository dependencies.

This repo uses pnpm as its package manager. Enable Corepack so the correct pnpm version (pinned via packageManager in package.json) is used automatically:

$ corepack enable    # one-time: activates pnpm shim from packageManager field

Then install dependencies:

$ nvm use            # use node v22
$ pnpm install       # install dependencies

Optional: the assembler geometry service

assembler is a Rust service (STEP → GLB + assembly motion planning) over C++ FCL and OpenCASCADE. ERP/MES run fine without it — set it up only if you need the 3D /convert and /plan endpoints.

  1. Toolchain + native build deps (macOS):

    $ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh   # Rust, if not already installed
    $ brew install fcl cmake ninja draco                               # collision libs (+ libccd/eigen/octomap), build tools, Draco mesh compression
    

    On Linux, install the equivalents from your package manager: libfcl-dev libccd-dev libeigen3-dev liboctomap-dev libdraco-dev cmake ninja-build plus a C/C++ toolchain.

    ./setup.sh already installs Draco on macOS. If yours lives outside the Homebrew keg (/opt/homebrew/opt/draco on arm64), point draco-bridge's build at it with DRACO_PREFIX=/path/to/draco cargo build.

  2. Build OCCT once — a patched static OpenCASCADE, cached in ~/.cache/carbon-occt. Slow (~15–30 min) but one-time per machine; re-running is a no-op once cached:

    $ ./apps/assembler/scripts/build-occt.sh
    
  3. Build the service — seconds once OCCT is cached (build.rs finds it automatically):

    $ cargo build --release -p assembler
    

crbn up spawns the binary when it's present. Verify it's up with curl -sf "$ASSEMBLER_SERVICE_URL/health" (the URL is in your worktree's .env.local) or by watching the asm | lines in the crbn up output. Without the binary the rest of the stack still runs — only /convert and /plan are unavailable.

The dev stack (Postgres, GoTrue, Kong, Storage, Inngest, Inbucket, Studio, Realtime) is booted later by crbn up — see Local dev CLI below. There is no separate "start the database" step.

Local dev CLI (crbn)

crbn is a small CLI at packages/dev/bin/crbn that wraps two things:

  • Git worktrees — every feature branch can live in its own checkout dir, so you can switch branches without stashing.
  • Per-worktree docker compose stack — each worktree gets its own Postgres / Supabase services on dynamic ports, isolated under carbon-<slug> compose project. Routing is handled by portless (a local HTTPS reverse proxy that serves *.dev hostnames on :443 with locally-trusted certs — installed automatically on first crbn up).

Windows users: the dev CLI (crbn, setup.sh) is POSIX-only and expects WSL or Git Bash. Native cmd.exe / PowerShell shells are not supported. From a WSL/Git Bash prompt, the standard flow (./setup.sh, pnpm dev, crbn checkout …) works the same as on macOS/Linux.

Run setup.sh once to put crbn on your $PATH and install the crbn shell function (so crbn checkout can change cwd):

$ ./setup.sh                   # writes a sentinel block to ~/.zshrc or ~/.bashrc
$ source ~/.zshrc              # or open a new shell
$ crbn                         # shows commands

Common flows:

$ crbn checkout sid/cool-thing       # cd into worktree (creates if missing,
                                     # auto-fetches from origin if needed)
$ crbn checkout -b feat/new-thing    # new branch off origin/main + worktree
$ crbn checkout sid/cool-thing --up  # …and boot the stack inside it
$ crbn checkout 760                  # fetch GitHub PR #760 into a `pr-760`
                                     # branch + worktree (fork PRs work too)
$ crbn copy                          # re-sync .env from main checkout
$ crbn up | down | reset | status    # per-worktree compose stack
$ crbn new | list | remove           # interactive worktree management

crbn up flags:

  • --no-migrate — skip supabase migration up (use when schema is already current and you just want to re-boot containers fast)
  • --no-regen — skip regenerating packages/database/src/types.ts + swagger-docs-schema.ts (auto-skipped when --no-migrate is set, since no schema change implies no type drift)

Files synced by crbn copy are listed under package.json#crbn.copy (defaults to [".env"]). To uninstall the rc block: ./setup.sh --uninstall.

Create an .env file and copy the contents of .env.example file into it

Truncated for display — read the full file on GitHub.

Related Skills

View on GitHub
GitHub Stars2.6k
CategoryData
Updated1h ago
Forks364

Languages

TypeScript

Security Score

88/100

Audited on Sep 21, 2026

1 medium