What If Tinkercad Was Self-Hosted?

While we use a lot of CAD tools, many of us are fans of Tinkercad — especially for working with kids or just doing something quick. But many people dislike having to work across the Internet with their work stored on someone’s servers. We get it. So does [CommonWealthRobotics], which offers CaDoodle. It is nearly a total clone of Tinkercad but runs on Windows, Linux, Mac, or even Chrome OS.

Is it exactly Tinkercad? No, but that’s not always a bad thing. For example, CaDoodle can work with Blender, FreeCAD, OpenSCAD, and more. However, on the business end, it sure looks like the core functions of Tinkercad.

The program appears fairly new, so you have to make some allowances. For example, the Linux AppImage seems to have difficulty loading plugins (which it needs to import many of its file formats). In addition, on at least some systems, you have to resize the window after it starts, or it won’t respond. But, overall, it is pretty impressive. The Settings, by the way, has a checkbox for advanced features, and there are some other goodies there, too.

One reason we found this interesting is that we sometimes go into schools, and they don’t want us to have kids on the Internet. Of course, they don’t like us installing random software either, so you can pick your battles.

Tinkercad, of course, continues to add features. Not all of which you’d expect in a drawing package.

12 thoughts on “What If Tinkercad Was Self-Hosted?

  1. Hey there folks! I am the creator of CaDoodle and I am so happy people are hearing about it and using it! After the Tinkercad outage due to the AWS outage, I started noticing CaDoodle getting lots of attention.

    I am always looking to improve this tool, and am especially looking for other Java devs to help out with the slowly growing back-log of issues. If you are interested in helping, or just using, CaDoodle, please consider joining our discord through the link on the main page.

    Feel free to AMA :)

      1. Yes! There are stand alone for linux and windows, but the Mac app security settings prevent any portable applications. You can also configure CaDoodle to pick where the working directory is, so you can save all the students’ work to the flash drive.

    1. especially looking for other Java devs to help out

      I saw this and became interested, but after looking at the code, I have a lot of concerns/questions.

      Why is there a git submodule to BowlerStudio, which appears to be a completely unrelated project?

      Why are there so many shell scripts for building/running/installing when you’re already using Gradle?

      Where are your unit tests?

      I feel like the installer/updater being its own thing in another repo is also a smell, and the associated website being in a third repo, in a different organization. I’d have included all of that in the same project.

      1. BowlerStudio/bowler-scripting-kernel are the CAD kernel and UI abstraction layers, as well as the Advanced robotics IDE layer. By keeping the source in the development tree I can ensure that both IDE’s maintain compatibility and functionality, and as a lone developer, i can do so in a way that I can manage alone. Basically the cadoodle application repo is JUT the UI elements. the entire CAD engine is in the kernel, and the 3d windowing and control system is pulled out of the BowlerStudio sources. As i develop CaDoodle, BowlerStudio and the bowler CAD kernel each receive the improvements in-line. CaDoodle could be thought of as the new UI for BowlerStudio.

        I often do development all the way down to the CSG stack that I also maintain, and in order to test changes through the stack without releasing untested code, it is very convenient to have it all build from source in a single project.

        As for the shell scripts for running the application, the archetecture is that the main application is not actually run directly by the user, so the shell scripts test the running from source on the various systems on which development is supported, and ensure the developer is using the correct JVM to run the test.

        As for unit tests, those exist withing the project where the functionality resides, mostly in bowler-scripting-kernel and JCSG. BowlerStudio and Cadoodle-Application are JavaFX ui’s, and TBH i do not have UI unit test. If you know how to automate UI testing, that is certainly a skill I am missing and would appreciate!

        I keep the installer in a separate repository because it is literally a different Java application with no shared code in the main application. It is packaged with jpackage into the OS-specific installers, whereas the main application is released as a jar with a json file defining the OS specific JVM. The auto-updater updates the Jar, and JVM if necessary, so that is always running on the latest security patched JVM with the latest application version.

        As for the website being in a different project, that is a strange Github compatibility issue. I already have a Commonwealthrobotics website, so the githubio naming convention failed to allow me to make a cadoodle website that also has its own DNS mapping.

        The main thing to remember, I am a full time teacher, and the dev-ops decisions are tailored to being able to have only a precious few moments between teaching and prep work to be able to make bug fixes and improvements. I use the long vacations of summer to make major lifts. If my decisions are odd to the Sr developers eye, yeah, i get that. I’m always happy to learn :)

  2. I was introduced to tinkercad while trying to introduce 3d modeling to kids. OpenSCAD is clearly a little advanced for trying to teach the fundamentals of 3d space, and Fusion 360 (or any Autodesk software) was prohibitively expensive. Tinkercad was a great idea, and after learning and teaching it, I’ve found myself using it more often than I anticipated. For us the primary downside is the browser-only online environment. There are always trade-offs with anything though.

    I hadn’t heard of CaDoodle before this, and this sounds great–I’m surprised that after being so well-received for what it is that Tinkercad never released any standalone offline versions. We run Debian, so I’ll give CaDoodle a try tomorrow! We have a pc that has windows, but it’s not ideal for us to resort to that, so hopefully we can get the Linux package running reliably. A project like this would really great news for us!

    Thanks for posting, can’t wait to give it a go!

  3. Works with OpenSCAD? I’m interested.

    Being able to assemble some geometric shapes in a tinkercad-like interface and then have it spit out a script for further use would make it a killer app. Being able to flip back and forth would be revolutionary.

    1. Or, here’s an idea (tempted to tackle this one myself):

      Suppose you have a large and complex rubber gasket thing you need to make a replacement for. But printing flexible stuff by itself is a pain, because it needs support.

      So you design the flexible gasket itself here, in this tool. Then you export it as an OpenSCAD script. Then, you mash that script together with some boilerplate to make OpenSCAD build a solid shell around the actual gasket meant to be printed in flexible filament. Then you use the color tagging example presented in https://hackaday.com/2025/10/14/openscad-in-living-color/ to export the solid shell (to be printed in water-soluble PVA) alongside the flexible filament part into separate files for your 3D printer host software. Then you call the octoprint API and get it printing.*

      Tada, this becomes the human interface to a sophisticated 3D print post-processing toolchain that ends at the hotend nozzle.

      *(along the way you might be able to import generated STLs into something like Open3D if you want to run some sanity checks, like if you have enclosed PVA that won’t dissolve, though that python library is a bit flaky)

    2. Well it is sorta like that, but not quite. You can import an OpenSCAD script into CaDoodle, and that script will be copied in as a local file, but still OpenSCAD. You can open the copy from within CaDoodle and continue to tweak the scad, and the CaDoodle steps will be applied to it in sequence. It has a file watcher, so when you save the openscad file, the reloads it in CaDoodle and reapplied all the subsequent steps.

      The file format is a sequence of operations in a JSON file. It would be theoretically possible to generate an OpenSCAD file using the .doodle file as a sequence source. I do not have any plans for that path, but if someone wanted to make it, i’d be happy to help incorporate it!

Leave a Reply to Greg ChabalaCancel reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.