Craftplan
by Craftplan (open-source project by puemos)
A free, self-hosted AGPL-licensed ERP for small artisanal producers, built around a bakery-style plan-make-stock loop: versioned and nested BOMs, order-driven material forecasts that count open purchase orders, production batches that consume lots FEFO with cost snapshots, and supplier-to-customer lot tracing.
Why it is classified this way
We call this a Light manufacturing product. Has bills of materials or recipes, consumes stock when you build, and tracks production, but time-phased planning is not verified.
It is not labeled Full MRP because we have not verified that it uses lead times or required dates; and produces dated buy, make, transfer, release, or reschedule recommendations. That is a statement about the evidence we found, not a claim that the product is weak, see the capability table and the sources below.
The six Full MRP tests, and how Craftplan does on each (4 of 6)
- YesIt represents a bill of materials, recipe, or formula.Evidence: puemos.github.io › Catalog(opens in a new tab); puemos.github.io › Intermediates(opens in a new tab)
- YesIt accepts dated demand, sales orders, a forecast, or a master production schedule.Evidence: puemos.github.io › Inventory(opens in a new tab); puemos.github.io › Orders(opens in a new tab)
- YesIt nets that demand against stock on hand and orders already incoming.Evidence: puemos.github.io › Inventory(opens in a new tab); puemos.github.io › Purchasing(opens in a new tab)
- YesIt explodes requirements through at least one level of the bill of materials.Evidence: puemos.github.io › Inventory(opens in a new tab); puemos.github.io › Overview(opens in a new tab)The forecast turns orders into material needs through the BOM: it "Calculates required material quantities from product BOMs" for confirmed orders and their delivery dates, and the planner's Materials tab "Rolls up per-material demand, current stock, and shortage warnings for the selected horizon".
- UnknownIt uses lead times or required dates.Not established. No evidence found yet.
- PartialIt produces dated buy, make, transfer, release, or reschedule recommendations.Not established. Only partly shown: the evidence covers some of this but not all of it, so the test is not established.
These rules are applied identically to every product and enforced at build time, a record cannot be published as Full MRP unless all six pass with a source attached. Read the methodology.
Best for
- Bakeries and small food producers who make to order and want allergens, nutrition labels, lots and batch costs in one place
- Makers who can run a Docker server and would rather own their data than pay a subscription
- Small producers who need a supplier-to-customer recall trace without paying for traceability
Not a fit when
- Anyone who wants a hosted service or vendor support; there is no paid offering
- Shops that need storefront or accounting connections; none is documented
- Makers who need dated purchase suggestions from supplier lead times; shortages are flagged, orders are raised by hand
Pricing facts
What it costs to do manufacturing in this product.
Free to self-host
Free under AGPL-3.0 and self-hosted only, with no feature gating or user limits. You run the Docker stack (Craftplan, PostgreSQL and SeaweedFS for photos) and handle hosting, backups and upgrades yourself.
Free to self-host
$0/month
No published price
This vendor does not publish pricing, so you cannot compare it against anything here without contacting them. We will not estimate a figure.
What moves the real bill
- No published price. You have to contact the vendor, which usually means a sales call.
Plans
| Plan | Price | Add-ons and setup |
|---|---|---|
| Self-hostedCraftplan (AGPL-3.0) | Free | — |
| You install, host, back up and upgrade it yourself. | ||
Pricing detail
No commercial offering, hosted plan or paid support is published; Craftplan is self-hosted and free. The README's install path is Docker Compose ("Deploy Craftplan on your own server"), and the self-hosting guide also covers a single-container mode and Railway. Your cost is the server and your time.
Checked on October 9, 2026. Source: github.com(opens in a new tab). Prices change. Check before you buy.
Manufacturing capability
19 of 25 fields resolved. "Unknown" means we have not found first-party evidence. It is not a No.
Planning
Working out what to buy or make, and when.
| Capability | Finding | What we found |
|---|---|---|
| Accepts dated demandYou can tell it what is due and when, sales orders with dates, a forecast, or a production schedule. | Yes | Customer orders carry a delivery date, and forecasting reads them: the inventory forecast "Looks at confirmed orders and their delivery dates". Order items move from Pending to Scheduled on a production date.Reviewed October 9, 2026. Source: puemos.github.io › Inventory(opens in a new tab); puemos.github.io › Orders(opens in a new tab)Question this |
| Nets against stock on handIt subtracts what you already have before telling you to buy more. | Yes | The forecast "Calculates required material quantities from product BOMs" and "Compares demand against current stock levels", then "Highlights shortages so you can create purchase orders before running out".Reviewed October 9, 2026. Source: puemos.github.io › Inventory(opens in a new tab)Question this |
| Counts incoming ordersIt knows about purchase orders and production orders already placed, so it does not tell you to order twice. | Yes | "The inventory forecasting system factors in pending purchase orders when calculating material availability. This prevents duplicate ordering when a PO is already in transit for materials showing as low stock."Reviewed October 9, 2026. Source: puemos.github.io › Purchasing(opens in a new tab)Question this |
| Uses lead timesIt works backwards from when you need something to when you must order or start it, using supplier and production lead times. | Unknown | Not yet researched. We would need: documentation showing lead time fields that shift a suggested order or start date.Know the answer? |
| Produces dated buy/make suggestionsThe output is an actionable list with dates, order this much by this date, start this batch on this date. | Partial | Shortages are dated but orders are not suggested: the planner shows "Upcoming material shortages — Materials where projected end-of-day balance goes negative". You raise the purchase order yourself.Reviewed October 9, 2026. Source: puemos.github.io › Overview(opens in a new tab); puemos.github.io › Inventory(opens in a new tab)Question this |
| Capacity planningChecks whether your people and machines can do the work in the time available. | Partial | Capacity is a simple daily cap: cards "show capacity warnings when a product exceeds its max_daily_quantity", and the overview flags "Days where confirmed orders exceed the global daily cap." No people or equipment are modeled.Reviewed October 9, 2026. Source: puemos.github.io › Overview(opens in a new tab)Question this |
Production
Recipes, bills of materials, and running the work.
| Capability | Finding | What we found |
|---|---|---|
| Bill of materialsA list of the parts and quantities needed to make one of something. | Yes | "All recipe functionality is built on Bills of Materials (BOMs) with simple versioning." Each row links to a stocked material, and saving creates a new BOM version.Reviewed October 9, 2026. Source: puemos.github.io › Catalog(opens in a new tab)Question this |
| Multi-level BOMSub-assemblies inside assemblies, a part that is itself made from other parts, nested as deep as you need. | Yes | "Add Sub-assembly pulls another product’s BOM into the current one." The README lists "Automatic cost rollups across nested BOMs", and intermediate materials (a blend made in-house) can be produced, stocked and consumed by finished products.Reviewed October 9, 2026. Source: puemos.github.io › Catalog(opens in a new tab); github.com › README.md(opens in a new tab); puemos.github.io › Intermediates(opens in a new tab)Question this |
| Recipes & formulasBatch-style production by weight, volume, or percentage, including scaling a batch up or down. | Yes | Intermediate recipes have a standard yield and scale: "Select Make batch and enter the amount to make. Quantities scale automatically." Actual yield and ingredient usage are recorded at completion.Reviewed October 9, 2026. Source: puemos.github.io › Intermediates(opens in a new tab)Question this |
| Work / manufacturing ordersA record authorising and tracking the making of a specific quantity. | Yes | Production batches: "Production batching groups order items into efficient production runs with full material tracking and cost accounting." Batches go Open, In Progress, Completed or Canceled.Reviewed October 9, 2026. Source: puemos.github.io › Production batching(opens in a new tab)Question this |
| Routings & operationsThe ordered steps a product goes through, and which machine or station does each one. | Partial | BOMs carry labor steps ("Each step captures a name, duration (minutes), units_per_run , and an optional rate override"), used for costing. There is no operation sequence or work center.Reviewed October 9, 2026. Source: puemos.github.io › Catalog(opens in a new tab)Question this |
| Shop-floor trackingOperators report progress, time, and completions as the work happens. | Partial | A kanban board moves batches from Open to In Progress to Done, and Mark Done records "the produced quantity and optional duration in minutes". No operator terminal or step reporting.Reviewed October 9, 2026. Source: puemos.github.io › Overview(opens in a new tab); puemos.github.io › Production batching(opens in a new tab)Question this |
| Quality controlsChecks, tests, holds, and non-conformance records tied to production or receiving. | Partial | Lots carry an operational status of "available, on hold, or rejected", and held or rejected lots are excluded from consumption. No inspections or non-conformance records are described.Reviewed October 9, 2026. Source: puemos.github.io › Inventory(opens in a new tab); puemos.github.io › Traceability(opens in a new tab)Question this |
Inventory & traceability
Knowing what you hold and being able to trace it.
| Capability | Finding | What we found |
|---|---|---|
| Batch & lot traceabilityWhich incoming material lots went into which finished batch, and where those finished goods went. | Yes | "Craftplan preserves the links between a supplier receipt, its ingredient lots, completed production batches, and customer orders." Forward, backward and recall traces are built from the frozen batch allocation.Reviewed October 9, 2026. Source: puemos.github.io › Traceability(opens in a new tab); puemos.github.io › Production batching(opens in a new tab)Question this |
| Expiry & shelf lifeBest-before dates on materials and finished goods, with warnings before they lapse. | Yes | Lots record an expiry date, and consumption picks "FIFO/FEFO ordering (earliest expiry date first)". Expiry is captured per supplier lot on receipt.Reviewed October 9, 2026. Source: puemos.github.io › Production batching(opens in a new tab); puemos.github.io › Inventory(opens in a new tab); puemos.github.io › Purchasing(opens in a new tab)Question this |
| Serial numbersUnique identifiers on individual units, for warranty or field service. | Unknown | Not yet researched. We would need: documentation of serial number tracking on individual units.Know the answer? |
Commerce & accounting
Costs, purchasing, storefronts, and the books.
| Capability | Finding | What we found |
|---|---|---|
| Product costing & COGSWhat it costs you to make one, and the cost of the goods you sold. | Yes | Batch completion captures "Material cost", "Labor cost", "Overhead cost" and "Unit cost — Total cost divided by produced quantity", and the snapshots are stored on order items "for invoicing and COGS reporting".Reviewed October 9, 2026. Source: puemos.github.io › Production batching(opens in a new tab); puemos.github.io › Catalog(opens in a new tab)Question this |
| PurchasingRaising and tracking purchase orders to suppliers from inside the system. | Yes | Purchase orders to suppliers with an expected delivery date, received into stock: "Each supplier lot creates its own Craftplan lot and Receive movement." Partial deliveries keep the PO open.Reviewed October 9, 2026. Source: puemos.github.io › Purchasing(opens in a new tab)Question this |
| Accounting connectionSends financial data to bookkeeping software, or includes its own general ledger. | Unknown | Not yet researched. We would need: documentation of a named accounting integration or a built-in ledger.Know the answer? |
| Ecommerce connectionPulls orders and pushes stock levels to a storefront or marketplace. | Unknown | Not yet researched. We would need: documentation of a named storefront or marketplace integration.Know the answer? |
Openness & your data
Getting data in, out, and away if you leave.
| Capability | Finding | What we found |
|---|---|---|
| APIA documented programming interface so other software can read and write your data. | Yes | "JSON:API and GraphQL endpoints for programmatic access" with API key authentication. The docs include an API reference and a GraphQL reference.Reviewed October 9, 2026. Source: github.com › README.md(opens in a new tab); puemos.github.io › Api(opens in a new tab)Question this |
| WebhooksThe system can notify other software the moment something changes. | Unknown | Not yet researched. We would need: documentation of outbound webhooks or event subscriptions.Know the answer? |
| MCP supportA Model Context Protocol server, letting an AI assistant read or act on this data. Useful, but it has nothing to do with whether the product plans materials. | Unknown | Not yet researched. We would need: a first-party mcp server, or documentation of one.Know the answer? |
| CSV exportYou can get your lists out as spreadsheet files. | Yes | Settings exports orders, customers and inventory movements: "These exports are useful for external reporting, accounting integration, or data backup." Trace results also export to CSV.Reviewed October 9, 2026. Source: puemos.github.io › Settings(opens in a new tab); puemos.github.io › Traceability(opens in a new tab)Question this |
| Full data exportYou can take everything, including history and relationships, not just a few screens' worth of rows. | Yes | Self-hosted under AGPL-3.0 with your own PostgreSQL database. The README says "your data stays on your infrastructure, backed by PostgreSQL".Reviewed October 9, 2026. Source: github.com › README.md(opens in a new tab)Question this |
Deployment, licensing and your data
- Deployment
- Self-hosted
- Licensing
- Open sourceAGPL-3.0-only
- Team sizes
- Just me, 2–5 people, 6–20 people
- Manufacturing styles
- Batch & recipe products, Countable assembled products
About the licence
The repository's LICENSE file is the unmodified GNU Affero General Public License, "Version 3, 19 November 2007", and the README says "This project is licensed under the AGPLv3 License." Neither adds an "or any later version" grant, so we record AGPL-3.0-only. Read on 2026-10-09. Running it inside your own business is unaffected by the network clause; offering a modified copy to others as a service means publishing your changes.
Integrations
- SMTP, SendGrid, Mailgun, Postmark, Brevo and Amazon SES (email)
- iCal calendar feed
Industries
Jobs this product qualifies for
Derived from the capability table above, not hand-assigned.
Editorial notes and cautions
Things we would want a friend to know before buying.
- Craftplan is a young single-maintainer project (version 0.7.5, released 2026-10-08). Updates are frequent, so plan for upgrades and keep your own PostgreSQL backups.
- There is no Shopify, Etsy, QuickBooks or Xero connection. Orders are entered in Craftplan, and accounting gets CSV exports.
- Self-hosting means you run three services (the app, PostgreSQL and SeaweedFS for photos) and handle backups yourself.
Alternatives to Craftplan
An alternative is always an alternative for a reason. There is no universal replacement.
Inventora is hosted for you and connects storefronts and QuickBooks, so a maker who does not want to run a server gets production runs and batch traceability for a monthly fee instead of a Docker install.
- ERPNextStronger true MRP
ERPNext is also free and self-hostable but documents a full planning run with lead times and work orders, at the cost of a much larger system to set up and run.
Evidence and verification
Why this record is not Verified. The record was written in a single pass on 2026-10-09 from documentation for a fast-moving 0.x project. It stays Partially verified until an editor installs it or re-reads the docs after the next release.
License read from the repository's LICENSE file and README on 2026-10-09. Capabilities come from the project's documentation site and README. The project describes itself as "Self-hosted software for managing artisanal D2C micro-businesses" and has about 1,150 GitHub stars.
Sources we checked (14)
puemos.github.io
- Craftplan(opens in a new tab)
- Catalog(opens in a new tab)
- Inventory(opens in a new tab)
- Production batching(opens in a new tab)
- Purchasing(opens in a new tab)
- Traceability(opens in a new tab)
- Intermediates(opens in a new tab)
- Overview(opens in a new tab)
- Orders(opens in a new tab)
- Settings(opens in a new tab)
- Api(opens in a new tab)
raw.githubusercontent.com
What we still want to confirm
We publish our gaps rather than hiding them. If you can point us at a first-party page for any of these, we will update the record and credit the correction.
- Confirm whether lead times can be set on materials or suppliers; none is documented.
- Confirm whether webhooks or any storefront or accounting integration exist.
- Confirm whether serial numbers are supported.
Still unknown: uses lead times, serial numbers, accounting connection, ecommerce connection, webhooks, mcp support.