Octodraw

Octodraw is a lightweight direct 3D sketching and modeling project built with Kotlin and libGDX. It is useful for fast spatial sketching, planar face modeling, object/instance workflows, and automation experiments, not as a finished commercial CAD replacement.

Octodraw tutorial capture showing the application UI with the box modification workflow
A real capture from the running desktop app. The docs site keeps screenshots in the normal page flow instead of as a fixed hero layer.

The project currently targets JVM desktop through LWJGL3, Android, and a TeaVM/WebGL web runtime that can be packaged as an embeddable webcomponent.

What It Is Good For

Octodraw focuses on direct modeling: draw edges, close planar faces, then use tools such as Push/Pull, Move, Rotate, Scale, Stretch, Paint, and object placement. The modeler keeps a simple Y-up 3D workspace with snapping, guides, panels, and command-driven workflows.

Precision work is supported through grid, endpoint, midpoint, line, face, and guide snapping. G places grid guides and T places axis guides at the current snap target. Numeric input exists for active tools and should continue to be validated against the current build.

Objects are group/prototype based. Create an object from selected geometry, place instances, then edit an instance when the object definition should change. Hotspot-driven instance behavior exists in the current docs and should be treated as an advanced workflow.

Automation Surface

Power users and agents can work through the Groovy console, plugin API, command palette, and local MCP HTTP surface. MCP is deliberately local: it is for deterministic automation, validation, screenshot generation, command discovery, and documentation production. Public browser tutorials on GitHub Pages use the embedded webcomponent and must not require a desktop MCP server.

Interactive Tutorials

The new tutorial pages load JSON tutorial definitions and embed the Octodraw webcomponent bundle produced by the existing Gradle web build. The first version uses safe stubs for tutorial command execution while the public tutorial-facing webcomponent contract is stabilized.

Live Webcomponent

The site embeds the same browser editor that powers the tutorial pages. It is part of the page content, so it follows normal document flow and remains usable at desktop widths.

Loading Octodraw webcomponent...

If the editor stays black after page navigation, refresh the page once. Dismiss

Start Here

Downloads and Source Builds

Desktop builds

Use GitHub Releases for packaged desktop artifacts. Prefer the latest release page instead of version-pinned URLs.

Latest release

Linux Snap

The project is published as Octodraw on Snapcraft when release packaging is available.

Snapcraft

Android

Android builds exist, with current interaction best suited to mouse and keyboard input.

Google Play

Source and web

Build desktop, web runtime, and webcomponent artifacts from the repository with Gradle.

Repository

Build from source:

./gradlew build
./gradlew :lwjgl3:run
./gradlew :web:prepareWebComponentBundle

The webcomponent bundle is written to web/build/dist/webcomponent and copied into this site during the GitHub Pages workflow.

Source repository: github.com/alfu32/k3d