MCPcopy Create free account
hub / github.com/crbnos/carbon

github.com/crbnos/carbon @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
14,088 symbols 59,367 edges 3,778 files ⚖ AGPL-3.0 277 documented · 2% updated 2d ago★ 2,55484 open issues

Browse by type

Functions 12,371 Types & classes 1,717
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Carbon Logo

Carbon

The open core for manufacturing.



ERP · MES · QMS — API-first, extensible, yours.






<a href="https://carbon.ms"><strong>Website</strong></a> ·
<a href="https://docs.carbon.ms"><strong>Documentation</strong></a> ·
<a href="https://discord.gg/yGUJWhNqzy"><strong>Discord</strong></a> ·
<a href="https://github.com/orgs/crbnos/projects/1/views/1"><strong>Roadmap</strong></a>







<img src="https://img.shields.io/badge/TypeScript-000000?style=flat-square&logo=typescript&logoColor=white" alt="TypeScript" />
<img src="https://img.shields.io/badge/React-000000?style=flat-square&logo=react&logoColor=white" alt="React" />
<img src="https://img.shields.io/badge/Supabase-000000?style=flat-square&logo=supabase&logoColor=white" alt="Supabase" />
<img src="https://img.shields.io/badge/Rust-000000?style=flat-square&logo=rust&logoColor=white" alt="Rust" />
<img src="https://img.shields.io/badge/License-AGPL--3.0-000000?style=flat-square" alt="License" />

ERP Screenshot

MES Screenshot

Contents

Why Carbon

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 ☝️

Features

ERP Sales, purchasing, inventory, items, accounting
MES Shop floor execution and job operations
QMS Inspections, non-conformances, CAPAs
MRP Material requirements planning
Traceability Full lot and serial tracking
Nested BoM Multi-level bills of material
Configurator Product configuration
Capacity Planning Scheduling against real resource capacity
Custom Fields Extend any record
API & Webhooks Build your own apps on top of Carbon
MCP Client/Server AI-native integration surface
Accounting GL, journals, and third-party sync

See the full roadmap for what's next (up next: Simulation).

Technical highlights

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

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

Tech Stack

Layer Technology
Framework React Router
Language TypeScript
Styling Tailwind
Behavior Radix UI
Database Supabase (Postgres + RLS)
Auth Supabase
Cache Redis
Jobs Inngest
Email SMTP (Nodemailer)
i18n Lingui
Hosting Vercel
Billing Stripe
Geometry Rust (FCL collision + OpenCASCADE CAD)

Monorepo

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

carbon
├── apps         # applications
└── packages     # shared code

/apps

App Description How to run
erp ERP application pnpm dev (boots stack + ERP via crbn up picker)
mes MES — shop floor pnpm dev (select MES in picker, or both)
academy Training pnpm dev:academy
starter Example app built on the API pnpm dev:starter
assembler Geometry service (Rust): STEP → GLB + assembly motion planning spawned by crbn up (needs a release binary — see Optional: assembler)

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 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

Getting Started

Prerequisites

  • Docker — the monorepo uses Docker for local development
  • Node.js v22 (via nvm)
  • pnpm (via Corepack — see below; never npm)

You'll also want accounts with the following external services:

Service Purpose
Posthog Product analytics platform
Stripe Payments service
An SMTP provider (e.g. Resend) Email service

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.

Clone

Clone the repo, or fork it at https://github.com/crbnos/carbon/fork. Carbon is licensed under AGPLv3. If you'd rather not share your changes with your users, as AGPLv3 requires, or if you want the Enterprise features in packages/ee, you'll need a commercial license.

git clone https://github.com/crbnos/carbon.git
cd carbon

Install

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
nvm use            # use node v22
pnpm install       # install dependencies

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.

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):

bash 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.

  1. 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:

bash ./apps/assembler/scripts/build-occt.sh

  1. Build the service — seconds once OCCT is cached (build.rs finds it automatically):

bash 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.

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 a 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:

``bash 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 apr-760` # branch + worktree (fork PRs work too) crbn copy # re-

Extension points exported contracts — how you extend this code

browse all types & interfaces →

Core symbols most depended-on inside this repo

browse all functions →

Shape

Function 9,686
Method 2,685
Class 1,235
Interface 458
Enum 24

Languages

TypeScript100%

Modules by API surface

apps/erp/public/pdf.worker.min.mjs3,791 symbols
apps/erp/app/modules/sales/sales.service.ts191 symbols
apps/erp/app/modules/items/items.service.ts160 symbols
apps/erp/app/modules/production/production.service.ts143 symbols
apps/erp/app/modules/inventory/inventory.service.ts122 symbols
apps/erp/app/modules/purchasing/purchasing.service.ts109 symbols
apps/erp/app/modules/resources/resources.service.ts96 symbols
apps/erp/app/modules/quality/quality.service.ts92 symbols
apps/erp/app/modules/accounting/accounting.service.ts87 symbols
apps/erp/app/modules/settings/settings.service.ts85 symbols
packages/ee/src/paperless-parts/lib/client.ts67 symbols
apps/erp/app/modules/invoicing/invoicing.service.ts61 symbols

Datastores touched

postgresDatabase · 1 repos

For agents

$ claude mcp add carbon \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page