Show HN: Chili3d – A open-source, browser-based 3D CAD application

286 xiange 77 6/10/2025, 3:39:57 PM
I'm currently developing Chili3D, an open-source, browser-based 3D CAD application. By compiling OpenCascade to WebAssembly and integrating Three.js, Chili3D delivers near-native performance for powerful online modeling, editing, and rendering—all without local installation. Access it here:

https://github.com/xiangechen/chili3d

Features:

Modeling Tools: Create basic shapes (boxes, cylinders, cones, etc.), 2D sketches (lines, arcs, circles, etc.), and perform advanced operations (boolean operations, extrusion, revolution, etc.).

Snapping and Tracking: Precisely snap to geometric features, workplanes, and track axes for accurate alignment.

Editing Tools: Modify (chamfer, fillet, trim, etc.), transform (move, rotate, mirror), and perform advanced edits (feature removal, sub-shape manipulation).

Measurement Tools: Measure angles and lengths, and calculate sums of length, area, and volume.

Document Management: Create, open, and save documents, with full undo/redo history and support for importing/exporting STEP, IGES, BREP formats.

User Interface: Office-style interface with contextual command organization, hierarchical assembly management, dynamic workplanes, and 3D viewport controls.

Multi-Language Support: Built-in i18n support with current languages including Chinese and English.

Comments (77)

mdip · 11h ago
So ... like ... WOW.

I read your description and thought, "some toy 3D project; probably slow/lacking features." I mean, you did a fine job but perhaps reading it in such a simple view made it lose something? Not a critique on you, just an observation of myself.

I've looked at it all of a few minutes and this is pretty fantastic. Quite fast, the UI seems relatively understandable coming from other tools. Looks as clean as the rest, anyway.

And I've been annoyed that there's not Fusion 360 available (supported, anyway) for OpenSUSE Tumbleweed ... you may have saved me some grief with this, so thanks for that!

jasonthorsness · 15h ago
"by compiling OpenCascade (OCCT) to WebAssembly"

I wondered what geometry kernel it was going to use! Interesting to me how few of these there are. Some of the solid modeling stuff is nearly 40 years old (parasolid) this must be hard.

immmmmm · 13h ago
I’m doing a bit of BREP for GIS and even in 2D with line segments only the problem is really non-trivial, a lot of edge (pun intended) cases to take care of. Type system helps enormously, so probably rust will be a win here (I think I saw a project along those lines).

That being said, for CAD (personal usage) I switched from Fusion 360 to Freecad 1.0 with almost no project and the latter is an order of magnitude faster.

ssl232 · 6h ago
Agreed, FreeCAD 1.0 is finally almost usable and supports assemblies. My main issue with it is that the bill of materials tool was DOA but it’s fixed in the main branch. There are still lots of quirks but these can be learned in a few hours of using it.
seltzered_ · 5h ago
Worth noting there's also a fork of FreeCAD (Astocad, made by a former Ondsel developer) with some UI enhancements: http://astocad.com/
abe_m · 9h ago
I think the corner cases are likely hard, but the fundamental mathematical representations of the 3D geometry haven't changed. If the licensing cost of Parasolid and ASICs is reasonable, there isn't really a commercial incentive to create something new from scratch. The current market trend is consolidation as Autodesk and Hexagon when on a buying spree and bought up a lot of CAD and CAM software.

OpenCASCADE used to be commercial, but they couldn't find enough customers to keep on and it got open sourced after a failed commercial existence.

amelius · 13h ago
Would love to read more about how these types of geometric problems are best approached.
phkahler · 12h ago
>> Would love to read more about how these types of geometric problems are best approached.

Probably the most accessible NURBS kernel to learn from is the one in Solvespace. The entire source for the core NURBS is about 6KLoC:

https://github.com/solvespace/solvespace/tree/master/src/srf

My favorite file in there is ratpoly.cpp

It doesn't handle higher order NURBS or use knots. It's just the basics, but there are a lot of geometric algorithms in there. We're still trying to get the bugs out of NURBS booleans, but the high level algorithm is sound.

BTW it can also be compiled for web but that is incomplete.

johncalvinyoung · 11h ago
Ugh, I wish I could read it but as I'm working in this space professionally reading GPLv3 code is... risky.

Been working in 2D with bezier implementation for our in-house CAD kernel. 3D parametric is limited at the moment, though.

rcarmo · 15h ago
Impressive, but I don't see any way to do constraints or sketches.

(I'm also a bit sad that this is a web app, but, alas, such is progress.)

SamBam · 14h ago
As someone who works in a school with Chromebooks, I love that web apps like this exist, especially if students will be able to export the files to a 3D printer. It greatly opens up the number of tools we can use to do fun things.

That said, also as a teacher and a parent, I worry that Chromebooks are making kids have no idea about the world of non-web-apps. (And file systems, etc. etc.)

I watch my kid create a poster: find an image online, copy & paste into an automatic background remover, c&p into an image editing program to remove the watermark, c&p into Canva for assembling with text etc.

Meanwhile I show her that I can do the whole thing on Pixelmator Pro (or Affinity or Photoshop) and she looks at me like I have three heads.

phkahler · 12h ago
For CAD you can run Solvespace on a chromebook. I'm not sure I want to promote it for use below high school, as the geometry failures and their workarounds are probably too icky for younger users. I want more polish for kids.
rcarmo · 11h ago
Solvespace is hardly polished enough for general use, though. I can use it, but I constantly struggle against the way it handles sketches.
sirjaz · 13h ago
Chromebooks need to die, we need to get back to native apps. Look with Windows we have msix, with Linux we have flatpack, etc .. Storage is cheap, and our devices are powerful. Let's use that power
SamBam · 11h ago
It simplifies things for schools, because everything is easily managed, everything integrates with Google classroom, and the hardware is fungible, you can log into any one and have your files.

It doesn't train them how to use real computers, but that's not on the state standards so they don't care.

franga2000 · 2h ago
Google Classroom is the worst LMS I've ever used and the "log in from any machine and have your files" thing was solved by Active Directory decades ago...

The reasons schools ate them up os because they're cheap and were the most readily available laptops during a shortage. I really doubt much else was on anyone's mind.

DaSHacka · 5h ago
> It doesn't train them how to use real computers, but that's not on the state standards so they don't care.

Arguably, it really should be.

xiange · 5h ago
The current version does not include this, but it will be available as parametric components in the future.
mft_ · 11h ago
OFC this being HN people are jumping on the side comment about web apps.

BUT the more relevant and valuable point you made was about constraints and sketches.

And, related to this, true parametric design, which IMO is vital for a CAD package to be taken seriously.

the__alchemist · 5h ago
Yep! Would love to try this once he or she adds parametric. We need good-quality reasonably-priced software in this domain.
joeevans1000 · 11h ago
Browsers can be just as powerful as 'native' apps. This is an example of that. Browser apps free the user from proprietary operating systems and their companies. Of course, Linux is a way around that. However, why not just write it once and let students and engineers the world over be able to share and open files easily?

UPDATE: On my newer laptop thius is faster than my native apps. And I was literally drawing shapes within 30 seconds of clicking on the link to this app. Compare that to the nightmare of all the other tools out there with registrations, email clutter, 2FA, and on and on. Oh, and cost in most cases!

UPDATE 2: I have no connection to this team other than having just seen a post online about this tool. I've been navigating the world of SketchUp/AutoCad/Revit recently so this of course is totally thrilling. Especially for what it means for the future.

gmueckl · 11h ago
This is just blatantly wrong. There are so many native resources that any serious 3D application requires access to that are blocked by browsers that this statement just isn't true and never will be.
abe_m · 9h ago
Out of curiosity, what native resources are needed? It seems Solidworks mainly needs access to the file system, GPU, and perhaps networking. GPU and networking in the browser, and the file handling could be implemented over the network instead of locally.

For most current pro CAD, certainly there are a lot of calls to Win32 libraries on Windows, but those aren't fundamentally needed by a CAD system. There was professional 3D CAD before Windows.

I don't know what native hardware would be needed that isn't already accessible through current Chrome?

gmueckl · 4h ago
There is the full power of CUDA kernels, for starters. Then there's a lot of potential low level optimizations that browsers don't enable that can easily make a 2x to 10x performance difference. Also, there is no good way to give hard bounds on memory usage.
ath92 · 1h ago
CUDA kernels are a non starter because they require Nvidia GPUs. Things like CAD software will mostly use some kind of lower common denominator graphics layer like openGL. Webgpu is actually a decent alternative to that.

There certainly are optimisations that aren’t possible in web browsers today. Arbitrary wasm memory constraints and difficulties around cpu multithreading or simd for example. But CUDA kernels aren’t a realistic option for most cad software.

gmueckl · 43m ago
Ansys runs on CUDA. That the reality of your "non-starter".
davidmurdoch · 6h ago
Browsers do offer a file system now, too.
joeevans1000 · 10h ago
That's why I said 'can'. Once OS's lift restrictions on what browsers can access then we'll finally have something more close to 'write once run everywhere'. But that wouldn't really help the proprietary software systems and companies.
capyba · 4h ago
Or just write it in java
SunlitCat · 3h ago
Was about to say "If we only have some kind of runtime system, which could run an app exactly the same on every supported operating system without needing to port that app, that would be awesome!". :D
gmueckl · 39m ago
If you want performance, you actually wouldn't want it to be exactly the same, ironically. You'd want to include hardware specific optimizations where needed. And unless Java has changed dramatically, this would at least require implementing the core performance critical parts in another compiled language.
tmjdev · 15h ago
Very impressive. Unsure what is going on with the tool icons, they're a bit strangely named. "Bessel", "pour corner" (twice), "From the cross section".

Looks like some work needs to be done to get this into familiar CAD terms with the English translation.

Difficult to use right now, it just switched into the Chinese translation when trying to make a cube and there doesn't appear to be an easy way to change that.

theanonymousone · 1h ago
Nice work. It seems I cannot open stl files in it, right?
Prime_Axiom · 15h ago
Nice work man, I always love seeing open source efforts especially in areas dominated by a few companies such as dassault and auto desk. On a somewhat related note, I’m excited for the nascent forays into context aware CAD using current llms.
Sheol27 · 9h ago
You did a great job! It looks promising, both for performance and UI. There are many tools in the 3D market which are unable to offer an intuitive and eye pleasing interface to work with.

Hope to see more projects like this one in the near future !

boznz · 10h ago
It looks pretty good and I encourage you to keep up the good work. you should also team up with a manufacturing or 3D printer company (like EasyEDA did for PCB production) and make it as simple as a few clicks to get your creation manufactured by casual users.
nicr_22 · 9h ago
Might be worth getting in contact with the Slant3D folks, their teleport 3d printing service might benefit from an integrated editor?
tapia · 14h ago
This looks super nice! That is kind of the interface I wish FreeCAD could have. I am more the type of person who likes to use a python interface to create parametric models, but this is really cool!

Anyone knows what is the status of Truck [1] in this regard. Are they going to implement an open-source CAD program with their CAD-kernel? That also looks like a promising project.

[1] https://github.com/ricosjp/truck

infogulch · 14h ago
CADmium is built with the Truck kernel, though it looks like CADmium has no repo activity since June '24. https://github.com/CADmium-Co/CADmium

There's also the Fornjot kernel. https://github.com/hannobraun/Fornjot

ttouch · 13h ago
Cadmium is long dead and unfortunately neither truck nor fornjot are "there" yet - "there" been anything more complex than a cube

Context: I was the main contributor/maintainer of cadmium

infogulch · 12h ago
Thanks for clarifying cadmium's status and offering your take on the state of truck and fornjot. So, what happened with cadmium? Is Truck just too primitive to build on top of so far? It looks like both of these kernels are actively being developed, what do you think of their rate of progress?
ttouch · 9h ago
meh, internal problems mostly

No idea where truck is going, it'll take me quite some time to tinker with CAD I think, it left me quite a bitter taste...

Fornjot seems to be doing good, I'm donating to them and I get regular updates (you should too!). Still, there's a long, long road ahead

If I were to do this all over again I'd either go the OCCT route (like chili3d or zoo) or solvespace. they're both "lacking" kernels if you compare them to the commercial ones, but I think there's enough "market gap" for makers that would prefer a sustainable CAD format instead of perfect fillets (and IMO freecad is not the solution).

Keep in mind though that my efforts where laser focused on non-math stuff. From what I gathered from my time in cadmium, b-rep kernels are hard in an unsustainable level. Browser level unsustainable. I just hope that out of seer necessity we'll find another way to solve the CAD problem, instead of a b-rep kernel

MaKey · 10h ago
> This looks super nice! That is kind of the interface I wish FreeCAD could have.

What do you dislike about FreeCAD's interface?

mclau157 · 10h ago
FreeCAD interface needs to take a lot of pointers from paid CAD programs, this Chili3D interface is quite close, larger icons in ribbons at the top of the screen with clear definitions
syntaxing · 6h ago
Absolutely amazing. I've been hoping for something that is similar to OnShape. I would absolutely pay in the hundreds for something like this. Its an absolute shame how expensive Onshape licenses are. There's no way I'm shelling 1k+ for a license.
dvh · 11h ago
This dialog is untranslated in english version: 选择 确定 取消
xiange · 5h ago
Oh, thanks! I will revise the translation.
jlarocco · 14h ago
There doesn't seem to be any PMI, annotations, or views of any kind?
ge96 · 9h ago
Recently saw someone post this "city to 3D printer" for the web and this is even better damn.
tmaly · 10h ago
Are there any programmatic interfaces to this?

I was just thinking about how TinkerCad has block coding.

yehoshuapw · 9h ago
this isn't really answering your question,

however with opencascade working in webassembly here, perhaps also cadquery and/or build123d can do something like that

djfobbz · 11h ago
Wow!! Killer UI I freaking love it.
sirjaz · 13h ago
Wouldn't this be better suited as a native app or as close to one as you can using wasmr
rowanG077 · 13h ago
Having used a few 3D CAD systems nothing is as good as solvespace. But when solvespace gets painful. It gets REALLY painful. I wish there was a serious dev team working on just solvespace.
joeevans1000 · 11h ago
Awesome!! Thank you so very much.
guillaume_gomez · 11h ago
Amazing work ! Very good job
racl101 · 11h ago
This is super rad.
kinard · 10h ago
Amazing.
pyinstallwoes · 12h ago
I’m learning 3d and confused about what to focus on for hard modeling. I just wanna make cool realistic spaceships. Should I do cad or blender?
WillAdams · 11h ago
Perhaps Blender w/ CADsketcher?

https://www.cadsketcher.com/

Or maybe NASA's Vehicle Sketch Pad?

https://software.nasa.gov/software/LAR-17491-1

bee_rider · 14h ago
This is a dumb question, but seems like as good a place as any to ask it:

I think of these CAD programs as being very old-school native programs that either are a loosely collected group of tools that allow you to manipulate files and pass them around (so, like, a bunch of Linux native programs that spit out files and ingest them, and you go around in the terminal to make sure everything is in the right spot), or a nice GUI around a bunch of those types of tools (it is definitely very possible that I’ve been influenced by only seeing these tools via engineering grad school where everything is open source, the gui’s don’t count, Linux command line is assumed, and 90’s tools are the baseline).

With a web-based system, what do you do? Like, for example if the user wants to pass models to some finite element simulation tool, do they just repeatedly download/simulate/go back to the website/edit/download/simulate, or something like that?

Is there a nice way for browser based apps to pipe to each other?

jlarocco · 14h ago
I don't think your understanding is correct.

In the 60s, 70s, and 80s it was more true, but nowadays Catia, NX, Creo, and the other big CAD systems are monolithic applications with extensions and add-ons (either from the vendor directly, sold as third party add-ons, or developed in house with CAA/NXOpen/ProToolkit) for doing stuff like composite design, sheet metal, various types of analysis, and a million other things.

Under the hood they're very modular with hundreds (or thousands) of shared library modules, and sometimes those modules have long histories going back to the 70s, but the UI of the 70s is long gone, and they're used like normal shared libraries, not piping around data on the shell.

Not that it doesn't happen - I'm sure some companies have old tools they haven't updated in decades - but the day to day CAD work is all GUI based.

That's my impression working at a company doing CAD translation, anyway.

In a lot of large deployments, the CAD data isn't even stored in files, but in a PLM database. For example PTC's WindChill and Dassault's Enovia/3DX.

bee_rider · 14h ago
I should say that this question is 100% not a backhanded critique of the idea of this project, I’m genuinely curious what the workflow looks like.

Making CAD more accessible seems like a massive win, in the sense that it is really hard to get hands on experience making things nowadays—hobbyist methods and professional ones have diverged quite far! Easy web-based tool that bridge that gap without playing around in the shell could be really useful.

abe_m · 9h ago
CAD companies are very protective of their file formats, and use that as leverage to "encourage" companies to stay in their eco system, and upgrade to the latest versions of their software.

The main CAD program is often the center of use, and any specialty functionality is a add-in to the main cad program (FEA, CAM, etc).

If the specialty software is stand-alone, it still needs a CAD Kernel to be able to work with the BREP, and there are essentially only 2 main commercial kernels (Parasolid and ASICs).

zokier · 12h ago
I recently tested SimScale with OnShape, i.e. cloud FEM with cloud CAD. On the FEM side there was a button "import from OnShape", which opened popup that did go through authz flow ("do you want to allow SimScale to access your OnShape content") and then proceeded to show a part/assembly selection dialog. Reasonably smooth process considering that they are two completely separate companies etc.

No comments yet

fsloth · 14h ago
Not your main question but -

” very old-school native programs that either are a loosely collected group of tools that allow you to manipulate files and pass them around”

Opencascade is a C++ library and manages it’s state in single process. Examples: https://dev.opencascade.org/doc/overview/html/samples.html

zokier · 12h ago
I think parent was referring to BRL-CAD, which is very much feels like a collection of cli tools ducktaped together.
bee_rider · 12h ago
I was just commenting on my general impression of the sorts of tools I saw other folks in the lab using, or that I had to use in my classes. I’m more of a programming guy anyway, so it is probably an issue of me being an uninformed neighbor (all of the responses seem to indicate that I’m wrong mostly, which is definitely not surprising).
tranchebald · 11h ago
Yes. Make them a front end to project database you pay someone to host. There is one source of truth for the whole team, front ends are tailored to design disciplines, and development branches are created as needed. This is an obvious product that would be a major improvement that doesn’t exist.

Bentley and Autodesk have a Frankenstein version of this because they can’t disrupt their revenue stream for CAD software that stopped improving 20 years ago. iTwin (yes, the branding is that bad) is an attempt to link cloud to local-file-based work. ProjectWise was a first stab at that, which is worse than plain network storage in every way except that CAD managers don’t have to be responsible for configuration scripts.

bprater · 12h ago
Two CAD other projects using OpenCascade worth checking out: Beegraphy and BitbyBit. Beegraphy uses the Rhino/Grasshopper modeling style and BitbyBit sticks with Cascade's ethos.

No comments yet

felixbraun · 12h ago
Just leaving this here — you are up to something. Karpathy:

> Products with extensive/rich UIs lots of sliders, switches, menus, with no scripting support, and built on opaque, custom, binary formats are ngmi in the era of heavy human+AI collaboration.

If an LLM can't read the underlying representations and manipulate them and all of the related settings via scripting, then it also can't co-pilot your product with existing professionals and it doesn't allow vibe coding for the 100X more aspiring prosumers.

Example high risk (binary objects/artifacts, no text DSL): every Adobe product, DAWs, CAD/3D Example medium-high risk (already partially text scriptable): Blender, Unity Example medium-low risk (mostly but not entirely text already, some automation/plugins ecosystem): Excel Example low risk (already just all text, lucky!): IDEs like VS Code, Figma, Jupyter, Obsidian, ...

AIs will get better and better at human UIUX (Operator and friends), but I suspect the products that attempt to exclusively wait for this future without trying to meet the technology halfway where it is today are not going to have a good time.

https://x.com/karpathy/status/1930354382106964079?s=61

abe_m · 9h ago
That really seems like it is written by someone without any experience using 3D CAD, particularly of the "make physical stuff" variety, rather than the artistic movie and video game asset variety.

English (or other human) language is pretty bad at describing 3D geometry. People have been using drawings and physical 3D models to describe designs going way back into antiquity. The idea you can just use text suitable for a current-design LLM to manipulate 3D technical data really seems like an idea from someone who has never tried.

But also, Solidworks and Inventor (and I think NX) have extensive API coverage that would allow an LLM to manipulate the geometry data, if the LLM could figure out what the data meant, and what it wants to do. If you can do it on screen with a mouse and keyboard, you can likely do it over the API. An add-in could certainly be written to accept requests for information and instructions on api calls to make from an LLM.

johnwheeler · 15h ago
Sometimes I wish they would put in the README just a brief description of which part of the stack they're responsible for and how they used it.

I see that it uses some type of WebAssembly technology and some CAD/CAM API that gets translated over. I also see they integrated with Three.js,

but what I would like to know is how much of the whole "thing" are they responsible for?

Are they responsible for all that code that draws the viewport and lets the user pan around? Are they responsible for that Microsoft Office ribbon UI? Are they responsible for the internationalization? What parts did they do? When I look at this, it's so sophisticated it just makes me feel think about the widening divide as far as AI skill gap goes. Was AI used?

Now they don't owe me that, of course, and that's nothing on them, kudos to them! It's a brilliant project.

fsloth · 14h ago
I’ve found ”So what did you do” is usually obvious to domain experts and incomprehensible without understanding of the domain without _very_ long readme that would be comparable in complexity to a review article.
serf · 14h ago
>Are they responsible for that Microsoft Office ribbon UI?

Well, that's the beauty of open source. Go read it.

https://github.com/xiangechen/chili3d/blob/43161b9f51021f2ef...

>When I look at this, it's so sophisticated it just makes me feel think about the widening divide as far as AI skill gap goes. Was AI used?

I feel like this was the "So tell me about your father.." turn here , did you really care about the details or did you want to wax poetic about AI?

johnwheeler · 10h ago
If you want to know who made it, maybe try asking Microsoft, not expecting a random open-source project to hold the answers.

On the Widening AI Skill Gap No, sophisticated software doesn't automatically mean AI was used. Your immediate jump to an "AI skill gap" just because something looks well-made says more about your assumptions than about the software itself. Perhaps the real "skill gap" is in telling the difference between good engineering and AI magic.

nodesocket · 13h ago
Awesome, I literally just had this exact idea and started making a prototype with Cursor AI but gave up after about an hour going back and forth with AI not fixing bugs, or incorrectly implementing what I described. Fixing an issue, and then Cursor AI subsequently breaking it again.

Was going down the rabbit hole with TypeScript, React, and three.js.