COOLJAPAN OÜ / OxiCAD
OxiCAD — B-Rep geometry kernel

A geometry kernel with no C in it.

Modular boundary representation for mechanical CAD. Solid modelling, booleans, blends, STEP interchange — 1.8 million lines of Rust, and nothing else underneath.

1,821,428 SLoC Zero C/C++ FFI 36 crates no_std core wasm32 target
Dependency closure auditoxicad · cargo deny check bans · all features
LanguageLinesStatus
C0Absent
C++0Absent
Fortran0Absent
Assembly0Absent
Binary blobs0Absent
Rust0All of it
This is a check, not a claim. cargo deny check bans resolves the graph with every optional feature turned on, refuses any prebuilt native executable outright, and gates every single build script in the closure against an enumerated allow-list — so a new dependency that compiles C fails the build until a human reviews and admits it. That last part is the one that matters: a name-based ban list structurally cannot catch a pure-looking crate quietly invoking a C compiler. blake3 is in the closure and is on the list only because the root manifest pins its pure feature; drop that pin and the check is what tells you. Current result: bans ok. Nothing to declare
Clause 01Selection

You have had two options. This is the third.

Every CAD, CAM, CAE and BIM product needs a geometry kernel. Until now the choice was a closed C++ kernel you licence from a competitor, or an open C++ kernel you inherit the maintenance of.

KernelLanguageSourceMemory safetyWASM / embeddedPrice
Parasolid C++ClosedManualNoOn application
ACIS C++ClosedManualNoOn application
OpenCASCADE C++LGPLManualEmscripten onlyFree
OxiCAD RustLicensed sourceCompiler-enforcedNative targetPublished below

The memory-safety column is the one that is usually waved through, so be precise about what it buys: Rust does not make a kernel correct, and the Status section below lists exactly where ours is approximate. What it removes is a category — use-after-free in a topology arena that has been mutated by a boolean operation is not a bug class you triage here, because it is not representable.

Two of those vendors also sell CAD applications. If you build a product on their kernel, your roadmap is visible to a competitor and your unit economics are theirs to set. We sell one thing and we do not compete with you downstream.

Clause 02Capability

What is actually in it.

A modular workspace, not a monolith. Take the topology layer alone, or the whole modelling stack.

Topology & geometry
  • Boundary representation: body, shell, face, loop, edge, vertex
  • NURBS curves and surfaces
  • Analytic primitives: plane, cylinder, cone, sphere, torus
  • Curve and surface intersection
  • Tolerant modelling and healing
  • Mass properties and inertia
  • GD&T verification: all 14 ASME Y14.5 characteristics, each on a real measurement
Modelling operations
  • Boolean union, subtract, intersect — fast and exact paths, both callable
  • Extrude, revolve, sweep, loft, pad, pocket, hole
  • Constant-radius fillet, constant-distance chamfer, single-edge variable-radius blends
  • Shelling and offsetting
  • Draft and pattern
  • Sketch constraint solving, with an SMT/NLSAT-backed solver
Interchange & output
  • STEP AP203, AP214 and AP242 — plus AP209, AP210, AP238
  • STL, 3MF, OBJ; IGES is minimal (see Status)
  • Tessellation with tolerance control
  • Deterministic persistent identifiers
  • Serialisation of the full model tree
  • Bindings: Rust, Python via PyO3, WebAssembly, Rhai scripting

Then the analysis stack, in the same workspace.

This is the part most kernel vendors do not have. They stop at the geometry and hand you to a separate FEA product with its own file format and its own licence. oxicad-sim is a real finite-element and CFD implementation sitting directly on the same topology — which is only possible because the numerics underneath were already Rust. Skip this block if you are buying the kernel alone; the CLI currently exposes a narrower slice of it than the library holds, and Status says which.

Element library
  • Solids: HEX8, HEX20 serendipity, HEX27 Lagrangian, TET4, TET10, wedge, pyramid
  • Shells and plates: MITC4, DKT
  • Beams: Euler-Bernoulli, Timoshenko; cable and membrane
  • Axisymmetric, generalised plane strain, Q8, T6
  • Mixed u–p, enhanced-assumed-strain, XFEM-enriched, spectral
Analysis
  • Linear static, modal and eigen — block Lanczos, non-symmetric Arnoldi
  • Buckling: linear, and Riks arc-length past the limit point
  • Nonlinear material: plasticity, cohesive zone, composites, concrete
  • Acoustics: Helmholtz, structure coupling, room modes and RT60
  • CFD: Stokes, Euler FV, projection Navier–Stokes, SUPG, κ-ε, wall functions, SPH
  • Topology optimisation, adjoint sensitivity, aeroelastic flutter
Manufacturing & downstream
  • Toolpath generation and G-code output
  • Sheet metal: bend allowance, flat patterns
  • Nesting, lattice and infill
  • 2D technical drawing generation
  • PDM, assemblies and mates
  • Software ray tracer; scan-to-CAD and point-cloud reverse engineering
Clause 03Status

Which parts are approximate. Read this before the price.

Every capability listed above exists and runs. Several are partial or approximate rather than production-complete, and a kernel evaluation that discovers this in week three is a worse outcome for both of us than one that starts here.

BooleansThe exact path is not yet the defaultThe default pipeline tessellates each solid and classifies whole triangles by ray casting — fast, and approximate on complex or tangent geometry; feature operations that cut material inherit that. The exact path exists and ships: csg_boolean_robust splits every face along the combined plane arrangement of both solids, which removes T-junctions, then classifies fragments by an exact winding-number test — correct for non-convex solids and for coplanar face overlaps, where a plain BSP drops or doubles faces. It is reachable as boolean_mesh_robust, but you must call it; it is not yet wired in as the default entry point.
BlendsReal rolling-ball blends, with named gapsConstant-radius fillet, constant-distance chamfer, single-edge variable-radius fillet and the 3-valent convex corner blend all perform a real face trim. Still NotImplemented: variable-radius across more than one edge in one call, concave and saddle corner blends, chamfer_two_distances, chamfer_distance_angle, and face-to-face blending of non-adjacent faces.
ExchangeSTEP is broad; IGES is minimalSTEP covers AP203 / AP209 / AP210 / AP214 / AP238 / AP242 with streaming and error recovery. The IGES reader decodes a handful of entity types — line, point, arc, B-spline curve, colour, subfigure instance — and passes the rest through undecoded. Use STEP for full-fidelity interchange.
Meshing3D Delaunay is not hardenedThe working tetrahedral path is a basic incremental Bowyer-Watson, which the module’s own docs say is not hardened for large or degenerate point sets.
CFDThe CLI computes laminar flow onlyThe CLI accepts a turbulence-model selection, but κ-ε and Spalart-Allmaras fall back to the laminar solution. The library layer is considerably further along than the CLI exposes.
Warnings“Zero warnings” is true and partly boughtThe workspace builds clean under -D warnings for both rustc and clippy. A meaningful share of that comes from explicit #[allow(dead_code)] on scaffolding for the partial features above — roughly 13,800 occurrences across about 43% of source files — not from an absence of incomplete code. We would rather you heard that number from us.

Two things that are not on that list, because they held up. GD&T verification geometrically checks all 14 ASME Y14.5 characteristics, each against a real measurement — a best-fit plane, line, circle or cylinder, a FIM about a derived datum axis, a nearest-point deviation from an independent nominal — with no catch-all that fabricates a pass; an annotation missing an input it genuinely needs returns Unsupported, never passed: true. And every source file in the workspace is under 2,000 lines.

Clause 04Licence

Priced in public. No discovery call.

You should be able to find out whether this fits your budget without talking to anyone. Annual terms, per company, invoiced once.

Evaluation
US$5,00030 days · full source

Payable in advance. Source access within one business day of receipt.

Credited in full against an Integration or Source licence. Complete kernel, unrestricted technically. Non-commercial evaluation use only. No sales contact unless you ask for it.

Integration
US$60,000per year · one product line

Binary redistribution inside your product, unlimited end users, source access for debugging, security patches, 5 business day response.

Source
US$180,000per year · unlimited products

Full source licence with the right to modify and fork, all product lines, escrow on request, named engineering contact.

No royalty on your revenue, no per-seat runtime fee, no audit clause. Perpetual licences and acquisition of exclusive rights within a vertical are available — those two do require a conversation.

Clause 05Provenance

Nine years removing C. The kernel is what got built on top.

A geometry kernel is not a weekend project, and it is not the first thing you write. It sits on linear algebra, on transforms, on tessellation, on spatial indexing, on numerical robustness — and in every existing kernel, all of that is C or C++ or Fortran underneath.

So we started at the bottom and worked up. BLAS and LAPACK first. Then FFT. Then the scientific core. Then the geometry and point cloud layers. OxiCAD is the floor we reached after the foundations were already Rust all the way down.

OxiCAD B-Rep kernel └─ Oxi3D spatial indexing, tessellation, point cloud └─ SciRS2 numerical core └─ OxiBLAS · OxiFFT linear algebra, transforms └─ Rust standard library. Nothing further down.

That order matters, and it cannot be shortcut. A kernel written in Rust on top of a C numerics library still has C in the audit. Ours does not, because the layer beneath it was rewritten first, and the layer beneath that one before it.

The full stack is public on GitHub — 60+ projects, most of it Apache-2.0. The kernel is the part we licence.

Clause 06Next

Start with the source, not a meeting.

Send one line saying what you are building. You will get the evaluation source and the technical dossier — architecture, test coverage, benchmark methodology, licence text — within one business day. No qualification call, no discovery deck.