print-bench

N.U.G.G.S. Den

A terminal NUGGS module — the first one in the system that is not a run of bore. nuggs is the straight (the Bin Bridge); nuggs-yard is an open playpen; the nuggs backlog lists elbow / node / open module / wye, all of them still tube. This is the end-cap: a single-port rounded refuge bulb that turns the dead flat wall at the end of a run into a place to sit, hoard and hide.

Overview

Studio product shot of the den

Product Hero Studio render 1 / 5

Studio product shot of the den

A terminal refuge for the N.U.G.G.S. hamster-tunnel system: a single-port rounded burrow bulb that caps the end of a run, so a short bridge ends in a place to hide and hoard instead of a flat wall. It carries the same genderless quarter-turn port every NUGGS module shares, so it clicks onto any face either way round. Not a tube, not an elbow — the one module you stop at.

Designed for a hamster, by (the fiction goes) a hamster. Every feature here is a piece of Syrian-hamster husbandry a person plumbing a tube kit wouldn't think to add — an opaque refuge, a flank scent-rub rail, a convective vent chimney, and a cheek-pouch-relief mouth. The reasoning for each is in NOTES.md.

Work in progress — nothing in this system has been printed yet. The den passes gate.sh --slice and is watertight in geometry, but port_tol = 0.30 is an untested guess inherited from the shared standard. Print the coupon first (see Assembly & use) and expect to tune it.

Read this first — where a den belongs

A den is a dead-end. Its clear internal width (110 mm at defaults) is less than a Syrian's body length, so the animal cannot turn around in it and must reverse out. Under the NUGGS welfare rule a den therefore does not reset the run-length count — it is a refuge, not a turnaround. Use it to cap a short stub, where the reverse-travel budget isn't already spent by the tube feeding it. It buys refuge, opacity and ventilation for a run end; it does not buy length. The full rule and its source live in designs/nuggs/PM.md (N2) and docs/nuggs-research.md.

What you get

One printed part: a domed refuge chamber with a NUGGS port on the underside.

  • chamber — the den (≈ 116 × 116 × 139 mm at defaults). One genderless port, a hollow opaque bulb, six chimney vents, an internal flank-rub rail.

The four hamster features

  • Opaque refuge bulb. Clear tube gives a prey animal nowhere to be unseen. The den is the one NUGGS module deliberately closed and windowless — a solid-walled room to be out of sight in.
  • Flank scent-gland rub rail. A Syrian marks territory by dragging the glands on its flanks along a surface (a dwarf uses its belly — different animal, different feature). So the mark it wants is a horizontal ridge at flank height: a rounded full-circle rail on the inner wall, a rub and never a chew edge.
  • Chimney vents. A closed refuge condenses worst of all, so the crown carries a ring of vents and warm breath rises out the top. They are teardrops, point up, so each one bridges its own roof and prints with no support — the tell of a design that has actually been sliced.
  • Pouch-relief mouth. An animal arriving with both cheek pouches full is wider at the face than the body. The entry is flared so a loaded arrival is funnelled in and never scrapes a lip.
  • Material: PLA or PETG. It is opaque by nature — that is the point of a refuge; a translucent filament would defeat it.
  • Layer height: 0.2 mm.
  • Infill: 15–20 % is plenty; the shell does the work.
  • Supports: none needed. Every shoulder and the crown sit at ~40° from vertical, the roof closes to a self-supporting point, and the vents are teardrops — the whole part is support-free in the as-modelled orientation.
  • Orientation: as modelled — port sectors down on the bed, bulb up. Do not rotate it; the coupling is meant to print standing on its lug tips.
  • Brim: yes. The part stands on three small sector tips (~530 mm² contact), so a brim is worth it for a tall part. This is the same first layer every NUGGS module prints on.
  • Heads up: it is a substantial part — ~127 g and ~10 h at defaults, because a refuge is a real room. Shrink bulb_r if you want it smaller.

Parameters

The handful most worth tuning; the rest are grouped in the Customizer sections at the top of nuggs-den.scad.

ParameterDefaultWhat it does
bore_d80 mmInternal bore — the shared NUGGS headline number. Floored at 70 mm by the coupling library (Syrian entrance minimum).
port_tol0.30 mmThe one fit knob for the quarter-turn joint. Tune on the coupon in ±0.05 steps.
bulb_r58 mmHalf the chamber OD. Bigger = more room, but a taller, heavier print (the crown must stay support-free).
bulb_wall3.0 mmChamber shell thickness.
eq_h26 mmEquator-band height; the vents and rail live on it.
n_vent6Number of chimney vents.
vent_d9 mmTeardrop vent diameter.
rail_h4 mmHow far the flank rub rail reaches into the bulb.

Override on the command line with, e.g., -D 'bulb_r=50'.

Assembly & use

  1. Print the coupon first. nuggs-den-coupon.scad is a bore-clean port stub. Mate two of them (or one to any NUGGS module) and step port_tol in ±0.05 until the quarter-turn seats snugly without forcing. Set that value in nuggs-den.scad before printing the den.
  2. Print the den with a brim, no supports, port-side down.
  3. Fit it onto any NUGGS face: push together, twist a quarter turn either way. It comes apart the same way, with the animal free to leave.
  4. Place it capping a short run (see Read this first). Give it a handful of bedding; a Syrian will find the rub rail and claim it.

Workbench

View in 3D

Inspect the real geometry — drag to rotate, scroll to zoom. The model is rendered from this design's own source at its default settings, right in your browser; nothing is uploaded.

Make it fit

This design has 27 tunable parameters. Change them and render your own STL — OpenSCAD runs in your browser, so nothing is uploaded and nothing is installed.

An STL you configure here is ungated. The files this project ships have each passed a printability check and a PrusaSlicer test-slice; your variant has not. Treat it as a starting point, and print the fit coupon first if the design has one.

History

History of work together

  1. 2026-08-29 commit · git

    render.sh: emit the --render form the installed OpenSCAD build accepts (fixes the render camera opt) (#408)

    Shai Perednik shai
  2. 2026-08-29 commit · git

    Fix teardrop_hole() point orientation to +Z as documented; pin it with a mates manifest (#424)

    Shai Perednik shai
  3. 2026-08-24 commit · git

    Add the missing product-manager characters to the People page (#381)

    Shai Perednik shai
  4. 2026-08-14 commit · git

    Add AI lifestyle shot: nuggs-den

  5. 2026-08-14 commit · git

    Note lifestyle-shot provenance: committed stills predate seeding

  6. 2026-08-14 commit · git

    CI: regenerate previews and product pages

  7. 2026-08-13 commit · git

    Switch tier-2 lifestyle shots to image-to-image seeded from real renders

  8. 2026-08-11 decision · PM.md

    Ship tier-1 studio shot + turntable + tier-2 AI still/clip

    PM called for the shots; the frozen previews were a placeholder, not the plan

    Nadia nadia
  9. 2026-08-11 decision · PM.md

    Fixed pouch_relief mouth (z_tipz = 0)

    Three PR reviewers found the flare was a silent no-op; a claimed feature must be in the mesh

    Nadia nadia
  10. 2026-08-11 commit · git

    Add AI motion clip: nuggs-den (#190)

  11. 2026-08-11 commit · git

    Add AI lifestyle shot: nuggs-den

  12. 2026-08-11 commit · git

    Add design: nuggs-den — a terminal hamster-refuge NUGGS module (#189)

    Shai Perednik shai
  13. 2026-08-10 decision · PM.md

    Terminal single-port refuge, not another tube/elbow

    The system had no place to stop; the ask was a unique non-tube part

    Nadia nadia
  14. 2026-08-10 decision · PM.md

    Consumer of lib/nuggs-coupling.scad, no derives.conf

    It includes the library, not another design's .scad

    Nadia nadia
  15. 2026-08-10 decision · PM.md

    Dead-end, explicitly not a run-length break

    Honest welfare scope; 110 mm internal < body length, cannot turn around

    Nadia nadia
  16. 2026-08-10 decision · PM.md

    Crown as a support-free cone, tip blunted by a sphere

    Support-free roof with no sharp poke point / singular apex

    Nadia nadia