OSSO tools inventory
Software, libraries, file formats, techniques and services actually used on OSSO, found from the scripts in cad/, drawings/, pcb/, fab/, laser-test/, site_build/, the installed environments (/workspace/.cadvenv, system packages) and JOURNAL.md. Versions are what is installed on the box as of 2026-10-23. Two box venvs exist: /workspace/.cadvenv (older) and /workspace/.cadenv (CadQuery 2.8.0 + pyvista + trimesh, used for the tool-drop v2d model). "Not installed now" means a past script used it but the current box env lacks it.
CAD generation (3D)
| Tool | Version | Used for | First used/Files |
|---|---|---|---|
Python (venv /workspace/.cadvenv) |
3.13.5 | Runs every generator and verifier script | Oct 14; all *.py |
| CadQuery | 2.8.0 | Parametric solids for jigs, boards, stencil frames, dispenser POCs; STEP/STL export (cq.exporters.export), STEP re-import (cq.importers.importStep) |
Oct 16, cad/jig_v4b/jig_v4b.py; all cad/*/make_*.py |
| OCP (cadquery-ocp, OpenCASCADE bindings) | 7.9.3.1.1 | Low-level B-rep work: BRepCheck_Analyzer validity, volume props, booleans |
cad/*/verify*.py, dispenser POC v3-v5 |
| numpy | 2.5.4 | Geometry math (involute gear profiles, hole patterns, sweeps) | most CAD/drawing scripts |
| shapely | 2.2.0 | 2D outlines, morphological closing, unary_union for gear/disc profiles |
pcb/br_g1_v1/make_br_g1.py, laser profiles |
| scipy | 1.18.1 | Installed CadQuery dependency; numeric helpers | venv |
| casadi / nlopt | 3.8.1 / 2.11.0 | CadQuery solver dependencies (assemblies/sketch constraints) | venv |
| vtk | 9.6.2 | CadQuery visualization backend | venv |
pyvista (venv /workspace/.cadenv) |
0.49.1 | Offscreen preview renders of STL/STEP models (iso, close-up, section views) | Oct 16-19, versions/v5_2026-10-19/cad/*/render.py; Oct 23, cad/tool_drop_mech_poc_v2d/render_preview.py |
| trimesh | 5.1.1 (venv /workspace/.cadenv) |
STL watertight/extent checks | cad/stencil_v1/verify.py |
Fit check / interference method
| Tool | Version | Used for | First used/Files |
|---|---|---|---|
CadQuery/OCC boolean intersect + Volume() |
2.8.0 / 7.9.3 | Pairwise intersection volume between parts re-imported from the exported STEP; 0 mm³ = no interference | Oct 21, cad/ball_dispenser_poc_v3..v5 |
OCC BRepExtrema_DistShapeShape |
7.9.3 | Minimum clearance between non-touching parts at each sweep state (bbox prefilter first); an explicit list of intended contacts is excluded | Oct 23, cad/tool_drop_mech_poc_v2d/ |
| Mechanism torque/force sweep | (technique) | Moment arm sign and size, dead-center margin, deploy/release/hold margins at mu 0.2 / 0.3 / 1.5x seal friction, pass/fail gate in fit_check.json |
Oct 23, refs/tool_drop_*, cad/tool_drop_mech_poc_v2d/ |
| Angular sweep | (technique) | Rotate moving parts in 2° steps (0-20°/0-30°), re-check intersection volume and minimum gap at each step (gear mesh backlash 0.035-0.037) | POC v4/v5 |
| Probe cylinders | (technique) | Thin cylinders along fill/exit axes intersected with exported disc STEPs to prove paths open or blocked; hole-axis alignment asserted to 0.000 | POC v4/v5 |
| Tolerance-case matrix | (technique) | All thickness combinations (e.g. 0.25/0.30 carrier, 0.711-0.813 cover) checked for pocket gap and overlap | POC v3-v5 |
| STEP re-import + validity | (technique) | Every exported STEP re-read, solids counted, isValid(); STLs watertight |
Oct 16 jig v4b onward |
Drawings and 2D
| Tool | Version | Used for | First used/Files |
|---|---|---|---|
| matplotlib | 3.11.2 | All engineering drawings (plan, section, exploded) to PNG and multi-page PDF (PdfPages) |
Oct 15; drawings/*.py |
| ezdxf | 1.4.5 | DXF cut profiles (laser tests, alignment patterns, BR-G1 laser, BR-C1 covers) | laser-test/gen.py, cad/laser_align_*, br_c1_v2.dxf |
| SVG (hand-written) | (format) | Laser test/alignment patterns for LightBurn | laser-test/*.svg, cad/laser_align_*/*.svg |
| Pillow | 12.3.0 (system) / 13.0.0 (venv) | Site thumbnails, image compositing | site_build/build_site.py |
| fontTools, kiwisolver, contourpy, pyparsing | 4.67.0 / 1.5.1 / 1.4.0 / 3.3.3 | matplotlib dependencies | venv |
PCB: KiCad, Gerber, drill, DRC
| Tool | Version | Used for | First used/Files |
|---|---|---|---|
| KiCad / kicad-cli | 9.0.2 | .kicad_pcb written by script, then kicad-cli exports Gerbers, Excellon drill, job file, and runs DRC (drc.rpt, 0 errors) |
Oct 21, pcb/br_g1_v1/make_br_g1.py, pcb/br_g2_v1/ |
| Hand-written RS-274X X2 + Excellon | (technique) | First Gerber set before KiCad was on the box | Oct 16, fab/gen_v3b_gerbers.py |
| gerbv | 2.10.0 | Render Gerbers back to PNG for visual check | Oct 16, fab/render/, pcb/br_g1_v1/preview_gerbv.png |
| Gerber/Excellon re-parse verifier | (technique) | Re-read output files, count teeth/holes, compare to geometry report | pcb/br_g1_v1/verify_br_g1.py, verify_report.json |
3D printing and laser
| Tool | Version | Used for | First used/Files |
|---|---|---|---|
| Bambu Studio (AppImage, headless slice) | 02.08.02.61 (box); the designer 02.08.02.60 | 3MF projects for P1S, headless slice estimates | Oct 16, cad/jig_v4*/make_3mf.py, /workspace/tools/bambu |
| LightBurn | the designer's copy | UV galvo laser jobs from SVG/DXF | Oct 16, laser-test/settings.md, refs/laser/ |
| Klipper (Elegoo Neptune 4) | stock | Planned PnP / flux syringe motion | Oct 21, journal |
File formats
| Format | Tool | Used for | First used/Files |
|---|---|---|---|
| STEP (.step) | CadQuery/OCC | Parts and assemblies for the designer's CAD and vendors | Oct 16, cad/*/*.step |
| STL | CadQuery | Print meshes | Oct 16, cad/jig_v4b/*.stl |
| 3MF | make_3mf.py | Bambu Studio projects | Oct 16, cad/jig_v4b/*.3mf |
| DXF / SVG | ezdxf / script | Laser and SendCutSend cut files | Oct 15, laser-test/, br_c1_v2.dxf |
| Gerber X2, Excellon, .gbrjob, zip | kicad-cli / script | PCB fab uploads | Oct 16, fab/, pcb/*/gerbers |
| PNG / PDF | matplotlib | Drawings | drawings/ |
| JSON / Markdown | Python | Geometry/verify reports, notes, journal | throughout |
| MP4 | (video generation) | Vision reels | Oct 15, video/ |
PDF tools
| Tool | Version | Used for | First used/Files |
|---|---|---|---|
| matplotlib PdfPages | 3.11.2 | Multi-page drawing PDFs, tech sheets | drawings/*.pdf, refs/laser/laser_tech_sheet.pdf |
| poppler-utils (pdftoppm, pdftotext, pdfunite) | 25.03.0 | Rasterize/read PDFs (datasheets, checks), merge pages | refs/ datasheets |
Docs site
| Tool | Version | Used for | First used/Files |
|---|---|---|---|
| build_site.py (custom static generator) | in repo | Builds site/ from JOURNAL.md, TODO.md, PENDING, refs, versions |
Oct 20, site_build/build_site.py |
| Python-Markdown (extra, sane_lists) | 3.11.1 (system) | Markdown to HTML | build_site.py |
| check_links.py | in repo | Verifies every relative link and anchor | site_build/check_links.py |
Versions, sync and backup
| Tool | Version | Used for | First used/Files |
|---|---|---|---|
| GNU tar + gzip | 1.35 | Version snapshots versions/OSSO_vN_DATE.tar.gz; sync bundles |
Oct 15, versions/ |
| sha256sum / split (coreutils) | 9.7 | Chunked tar transfer to the designer's Macs with checksum verification (hourly sync) | Oct 21 restore from work Mac copy |
| Google Drive mirror | (connector) | Daily mirror of the project, done by another assistant | daily |
| ffmpeg | 7.1.5 | Video/media handling | video/ |
Research and fab services
| Service | Version | Used for | First used/Files |
|---|---|---|---|
| Web research (search + fetch) | live | Vendor specs and prices | throughout |
| PCBWay | web | Blank v3b (5 pcs ENIG), 5 OSSO boards, 50 BR-G1 discs; laser-cut tolerance check | Oct 16, fab/, pcb/br_g1_v1/README_FAB.md |
| SendCutSend (site + spec API scs-specs-platform) | web | 304 SS .030" limits; BR-C1 v2 covers ordered; Oct 23: 1008 CRS .074" armature plate for the tool-drop EPM latch (DXF) | Oct 21, cad/ball_dispenser_poc_v5/br_c1/QUOTE_NOTES.md |
| Chip Quik | web | SAC305 ball/paste pricing for per-board solder cost | Oct 21, journal |
| LCSC | web | Pogo pin YZD0029 datasheet drawing | Oct 16, cad/pogo_YZD0029/ |
| eBay (NV Liquidation) | web | 2x Neptune 4 parts units | Oct 21, journal |
| Literature (DOI) | web | EPTC 2012 tacky flux ball attach; IRJMETS flip chip flux | Oct 21, journal |
AI assistant
| Tool | Version | Used for | First used/Files |
|---|---|---|---|
| OSSO assistant in the Grok Bot app | app | All scripting, CAD, drawings, fab files, site and journal, with background helper agents for parallel tasks | Oct 14 onward |