Aura Scan Pipeline
Project links and history
- First substantive build: 25 July 2026.
- GitHub repository: aura-scan-pipeline.
- Public site: visit the public site.
Related public projects
Each link below reflects an evidenced family, lineage or direct connection. This project has 7 relevant public connections.
Aura interface, geometry and capture architecture
- aura-components - public page - shared technical architecture.
- aura-data-mapping - public page - shared technical architecture.
- aura-horn-torus - public page - explicit cross-reference, shared technical architecture.
- aura-of-intelligence-web-app - shared technical architecture.
- aura-spatial-perception - public page - earlier build; aura-spatial-perception is later, explicit cross-reference, ordered build lineage, shared technical architecture.
- aura-toy - public page - shared technical architecture.
- new-tori - public page - shared technical architecture.
Phone scans in, measurable CAD-ready twins out, processed entirely on your own machine. You walk around a picnic table, a wall or a skate bowl with an iPhone, export the scan from a LiDAR app (LiDAR is the phone’s laser depth sensor: it measures distance with light the way a bat does with sound), drop the file onto a Windows PC, and one command turns it into web-ready 3D models, a point cloud and a measured, layered CAD drawing. No cloud services, no accounts, no uploads. The data never leaves your own gear.
Public page: Aura Scan Pipeline
If you remember nothing else
Four commands. Everything else on this page is detail.
aura-scan init my-scan --mode asset # 1. make a folder
# 2. drop the phone export into scans\my-scan\raw\
aura-scan run scans\my-scan # 3. process it
aura-scan report scans\my-scan # 4. see what came out
Results land in scans\my-scan\exports\: a light 3D model for the web, a full-detail one, a point
cloud, a dimensioned CAD drawing, and a record card saying what was scanned and how far the
measurements can be trusted.
The one optional step worth doing: tape-measure two distances on site, then run
aura-scan pick scans\my-scan to click those same two points on screen and write the real numbers
into manifest.yaml. That is what turns a scan that looks right into a drawing an engineer can
trust. Full instructions are in docs/capture-guide.md.
Where this is up to
Plain status, no spin:
- The PC pipeline is built and runs end to end. Thirteen automated tests pass, and it has now processed a real scan: a child’s bike captured on an iPhone with Stray Scanner, fused from raw depth and camera poses, isolated from the room and measured at roughly 0.85 by 0.63 by 0.46 m.
- That first real scan taught the pipeline three things it now handles automatically: a covered lens at the start of a capture, the tracking jump when the phone relocates itself, and the fact that the phone changes its own focal length while filming.
- Scale is still uncalibrated on that scan, because no tape measurements were taken. The next real capture should include them, which is the difference between a believable number and a proven one.
- Known gap: the pipeline does not isolate an object from its surroundings yet. Run it on a scan
of a picnic table and it will measure the table, the ground and whatever else was within range,
and report the dimensions of all of it. Pulling one object out of a scene currently takes a
manual pass. Until that lands, trust
aura-scan runfor whole scenes and surfaces, and treat single-object dimensions as needing a human check. - The custom iPhone capture app is unbuilt source in
ios/. Compiling it needs Xcode on a Mac, and this project runs on a Windows box, so today’s captures come from existing apps. Stray Scanner is the one to use: it is open source, records locally, and claims no licence over what you scan.
Who it serves
- Places catalogue assets. Picnic tables, bubblers, bbqs and halls become inventory rows with real dimensions and a web model.
- Mind palace objects. Low-poly meshes light enough to load in a browser scene.
- Projection art surfaces. Walls and screens checked for flatness, with a usable-area outline for mapping light onto them.
- The Windemere bowl tender. Existing-conditions drawings for a skate bowl refurbishment bid: see docs/windemere-workflow.md.
Quickstart
Needs Python 3.12 and uv (winget install astral-sh.uv if you don’t have it). From the repo root:
uv venv
uv pip install -e ".[dev]"
.venv\Scripts\activate
Worked example, a picnic table:
# 1. Make a scan project (creates scans\picnic-table-one-mile\)
aura-scan init picnic-table-one-mile --mode asset
# 2. Scan the table with a phone app and drop the export
# (OBJ, PLY, GLB, LAS or a raw depth package) into
# scans\picnic-table-one-mile\raw\
# 3. Optional but recommended: click the corners you tape-measured on site
aura-scan pick scans\picnic-table-one-mile
Then open scans\picnic-table-one-mile\manifest.yaml and add the tape measurements against the picked points:
control:
picked_points: # written by aura-scan pick
- [0.412, -0.788, 0.731]
- [2.109, -0.815, 0.742]
distance_constraints:
- {points: [0, 1], distance_m: 1.685, note: "table top, long edge"}
# 4. Run the full pipeline
aura-scan run scans\picnic-table-one-mile
# 5. Re-read any processed scan later
aura-scan report scans\picnic-table-one-mile
Everything lands in scans\picnic-table-one-mile\exports\: meshes, point clouds, a dimensioned DXF drawing, a metadata.json sidecar, a thumbnail and a web viewer snippet.
Three capture modes
| Mode | For | What it adds |
|---|---|---|
general |
Any geometry | Balanced defaults, automatic plan and cross sections |
asset |
Public assets (picnic tables, toilets, bbqs, halls, skate features) | Oriented dimensions, footprint outline, condition field, inventory-ready simplification |
projection_surface |
Flat or near-flat surfaces for projection art | Plane fit, flatness check, usable-area outline, a plain suitable / not suitable verdict |
The LOD ladder
One capture, four tiers of detail, produced in a single run. LOD means level of detail: the same object at different weights for different jobs.
| Tier | What you get | Good for |
|---|---|---|
| LOD0 | Oriented bounding box and 2D footprint | A map pin and an inventory row |
| LOD1 | Low-poly web mesh (GLB, under 15k triangles) | Mind palace objects, browser model viewers, the places catalogue |
| LOD2 | Full-detail cleaned mesh (OBJ, PLY) | The archival geometry |
| LOD3 | Engineering pack: point cloud (PLY, LAS), dimensioned DXF plan and sections, flatness and dimension reports | AutoCAD-compatible work and tenders |
Two capture lanes
- Capture today. Use an existing free iPhone LiDAR app (Polycam, Scaniverse, 3d Scanner App, Stray Scanner, Record3D) and drop its export into
raw/. This lane works now; docs/capture-guide.md covers the apps, field technique and getting files onto the PC. - Custom app later. Full SwiftUI and ARKit source for a purpose-built capture app lives in
ios/. It has never been compiled, because that takes Xcode on a Mac. When it is built, its raw depth output becomes the preferred lane. Nothing downstream cares which lane captured the data.
More to read
- DESIGN.md: the full design, scale policy, metadata schema and phases.
- INTERFACES.md: the module contracts, for anyone working on the code.
- docs/capture-guide.md: field guide for scanning and transfer.
- docs/windemere-workflow.md: the worked engineering lane, scan to tender drawing.
- configs/: every threshold and layer name, in plain YAML.
Related public projects
- Aura Spatial Perception — consumes a read-only scan-pipeline adapter contract while keeping observation evidence separate.
- Aura Horn Torus — supplies the canonical Aura geometry used by the spatial-perception bridge.
🤝🔷 A Luke × Claude build. Public Source Licence.
Luke Hayes × Claude, Minjerribah · 2026.