New in this snapshot: 18 drawings, 4 STEP files, 5 documents/media.
Tools used as of this version
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 |
2026-10-25 1:13 PM EDT: Integrated machine phase begins
the designer handed design leadership to OSSO. The goal is a full-machine STEP assembly with assembly directions, covering components and assembly only (no software, firmware or final PCBs). OSSO leads a team of engineering roles, sends every choice to the designer as multiple choice with an Other option, marks blocking choices as IMPORTANT, snaps a version each work day at a point of notable progress, and puts feasibility experiments in TODO. Step 1 is an inventory of the subsystems, the gaps, a proposed team and an iteration plan.
2026-10-25 1:28 PM EDT: Five skeleton decisions (the designer)
- Frame: custom 2020/2040 extrusion frame with a bed-slinger layout (the head moves in X and Z, the bed carries Y).
- Head: 5 stations in one row (~118 mm).
- Laser: overhead in front of the gantry, 150 mm lens.
- Enclosure: fully enclosed, interlocked front door.
- Electronics: bay under the bed, external compressor.
Team: specialist roles run in the background under OSSO. Next is the skeleton assembly (overall size, zero point, travel budget, placeholder blocks).
2026-10-25 1:38 PM EDT: Skeleton v1 built; laser decision
Skeleton v1 (integration/skeleton_v1.*): the frame is 540W x 720D x 800H. Travel is Y 345, X 290, Z 100, tray 232. Nothing collides with the tray parked. Interlocks: head Z high while the tray is extended, and no lasing unless the tray is parked. TODO items 23-27 were added.
the designer: the laser source connects directly to the galvo as one unit, like a typical engraving machine. There's no extra fiber or mirrors, and the chiller is external.
2026-10-25 1:39 PM EDT: Skeleton v1 answers (the designer)
- Needles: redesign the arm for a shorter folded reach.
- Tray pick: the tray moves in, the head picks, the tray backs out ~30 mm, then the head places.
- Laser working distance: build a ±40 mm adjustable mount now and measure later.
Next: skeleton v2.
2026-10-25 1:58 PM EDT: Skeleton v2 done; laser architecture clarified
Skeleton v2: the frame is 700W x 720D x 680H, the needle stations use a vertical retract slide (46 mm drop), and the focus mount travels ±40 mm. Interlock rules are v2. TODO items 28-31 were added.
the designer sent reference photos (integration/refs/): a typical UV engraver, with the source and galvo as one inline unit on an arm that rides a Z column with a handwheel. The separate box is the chiller, and it's external. Skeleton v3 will compare the arm running along X with the arm running along Y.
- 1:58 PM: the designer: the laser's power and controls go in the electronics bay under the bed with all the other power and controls. Only the chiller is external.
- 2:00 PM: The tallest TH part above the board is 15 mm (this covers caps up to 10x12.5). Taller parts go on the card-holder and edge companions, or lie flat.
- 2:00 PM: Drives: MGN12 rails with lead screws on all axes (X, Y, Z).
- 2:01 PM: the designer: accuracy is the priority on the drives. Use preloaded MGN12H carriages and anti-backlash nuts, with a repeatability test in TODO.
- 2:01 PM: Tray: multi-row, always backs out to the same fixed spot before placing.
- 2:02 PM: Door: side-hinged on the left, interlock on the right.
- 2:02 PM: Fume port: on the top of the enclosure.
2026-10-25 2:19 PM EDT: Skeleton v3 built
The inline laser unit runs along +X on a front 2040 focus column with a T8x2 screw and handwheel, WD 230±40. The Y-arm option collided with the gantry in every case (it would need a periscope, which is ruled out). The frame is 700x720x680, with a Ø100 top fume port. New interlock rule 6: lasing only while the fume extractor runs. TODO items 32-36 were added. v3 missed the mid-run decisions (15 mm TH, lead screws on all axes, multi-row tray, laser PSU in the bay, left door), so v3b applies them.
- 2:20 PM: Focus drive: a NEMA17 on the T8x2 screw, for auto-focus later.
2026-10-25 2:39 PM EDT: Skeleton v3b built
The frame is 700x720x660. All axes are MGN12H with T8 anti-backlash screws, about ±0.02 repeatability, and the Y screw is supported at both ends. The focus is a NEMA17 on T8x2, with a braced column. The tray has 8 rows of 8 mm strips (~360 parts) and backs out to 442. The bay is 620x580x125 and holds the laser driver, PSUs, controller and drivers. The door is hinged on the left. The laser interlock now requires the tray at 442 or further back. TODO items 37-45 were added.
2026-10-25 2:40 PM EDT
Snap v17
- Files: 1386
- Tar: versions/OSSO_v17_2026-10-25.tar.gz (257M)
- Site pages: 37