Run it
Three ways in, and the first one needs nothing at all. Whichever you pick, your models stay on your
own machine: Lamina has no accounts, no uploads and no cloud.
1 · In this browser — nothing to install
Open the app and use it. The whole program, Python and all, is
downloaded into the page the first time (about 60 MB, cached afterwards) and runs inside the tab. Best for trying
it and for everyday models — a few hundred thousand triangles slice in seconds to half a minute. Past roughly
50 MB of mesh it warns you: that size takes minutes in a tab, and can run the tab out of memory. It is not a
ceiling Lamina sets, it is what a browser tab is; the two options below have neither limit.
2 · On your computer — double-click, no commands
The fastest version, no size limit, works with no internet after the first run. You do not need to
know what a terminal is; a window with scrolling text is part of it, and you can ignore it.
- Download Lamina:
lamina-main.zip (about 30 MB).
- Unzip it — double-click the file on Windows or macOS — and open the folder that
appears. Put it somewhere you will find again, like Documents.
- Double-click the starter for your computer, right there in the folder:
Start Lamina (Windows).bat · Start Lamina (Mac).command ·
Start Lamina (Linux).sh.
- The first run asks once whether it may install uv
— a small tool that fetches Python and the libraries into your own user folder, nowhere else. Answer
y. It then downloads them, which takes a few minutes and happens only once.
- Your browser opens at
http://localhost:8000 and Lamina is running on your
machine. Leave the text window open while you work; closing it stops Lamina. Next time it starts in seconds.
- Updates come by themselves: each start checks for a new version of Lamina and
fetches it when there is one. Offline, it starts the one you have.
If macOS refuses to open the file ("cannot be opened because it is
from an unidentified developer"): right-click it → Open → Open. That is macOS asking whether you
trust a file you downloaded; you only have to do it once. On Windows, SmartScreen may ask the same way:
More info → Run anyway. On Linux, if double-clicking does nothing, mark it executable
(Properties → Permissions, or chmod +x) and choose "Run in Terminal".
Is there a normal installer — a .dmg, a .exe? Not yet. An installed app has to be signed by
Apple and by Microsoft or their systems block it, which costs money every year and is not something I can promise
to keep paying for a free tool. The starter above is the same thing without the signature: one double-click, and
nothing installed outside your own user folder. If you would rather work from a terminal, the commands are below.
3 · As a server, with Docker
For a workshop machine, a NAS or a maker space: one image with everything in it, each browser tab
with its own session, idle ones cleaned up after a day. Lamina has no login of its own — put it behind your
proxy's authentication before it faces the internet.
docker run -d -p 8000:8000 -v lamina-jobs:/app/working-files ghcr.io/marcelfarres/lamina:latest
docker-compose.yml
is the same thing as a stack for Portainer, Dockge or Komodo. To update: docker pull
ghcr.io/marcelfarres/lamina:latest and start it again (docker compose pull && docker compose up
-d).
From a terminal
If you have uv already, the starters are only wrapping
these:
uv tool install --python 3.14 lamina3d # "lamina3d[cad]" adds STEP and BREP import
lamina3d # opens http://localhost:8000
uv tool upgrade lamina3d # when a new version is out
If lamina3d is not found, run uv tool update-shell and open a new terminal,
or start it with uv tool run lamina3d.
The Model tab opens on a bundled example, and the
examples folder holds 24 in all — geometric
shapes, a scanned head and animals; the dumbbell and the snowman open with a radial axis per ball and a spine
through them all, the horse with its ribs along a curve and a branch down each leg, and the horse statue in
stacked side profiles.
From a clone of the repository (git clone https://github.com/marcelfarres/lamina.git, then
uv sync) the same pipeline runs headless, so it can be scripted or put in a build:
uv run python -m core.plan examples/egg.stl --mode interlocked --set nx=5 ny=4 --out out/egg
uv run python -m core.export out/egg.json --out out/egg_cut --fmt svg dxf pdf --labels
uv run python -m core.solid out/egg.json --proto out/egg_proto --scale 0.4 --labels groove
uv run python -m core.plan examples/egg.stl --list-params