π¬π§ English Β· πΉπ· TΓΌrkΓ§e
The code in this repository is open-source under the MIT License. Fork it, run it, build on it. (Design assets, images and CAD models are CC BY-NC-SA 4.0 β see License.)
A parasitic, telescopic mast-tent β a portable shading/shelter structure that clamps onto urban street bollards or is staked into the ground. Folded, it is hand-carried. Deployed, it resembles a small ship's mast with two inverted-cone fabric canopies and a top sail.
This is a real, open, in-development design β not a finished product and not a render exercise. The concept and a physical maquette were made in a single night, then driven straight into a parametric model. It went through a full modelling-stack migration (Fusion 360 β Rhino 8 + Grasshopper) as the geometry logic matured, and the deployment film was curated down from ~40 AI video takes. We genuinely intend to build it β the socket, the telescopic mast, the whole thing β and the repository is shared in that spirit: to show the reasoning that got here, and to invite feedback, forks and manufacturing collaboration. Everything here is meant to keep evolving.
Authors / Context β Creative Computational Architecture Β· Caglar Celik Architects (CCA). Concept and physical maquette developed 2026-05-16; parametric model built the same night with Claude as AI pair-modeller. Migrated to Rhino/Grasshopper 2026-05-17. Cinematic films generated with Seedance 2.0 / Kling 3.0. See Tools & Credits.
"Redefining space through computation." β a design praxis studio working across analysis, mathematics, art, geometry, philosophy, aesthetics, architecture and technology.
The heart of this project is not the renders β it is the parametric definition. The whole structure is generated by a Grasshopper graph: a set of grouped sliders feed one Python 3 build component that emits six geometry sets. Change a slider, the whole shelter regenerates.
12 sliders (5 logical groups) β build (Python 3) β 6 geometry outputs
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
MAST : mast_h, socket_h mast (3 telescopic tubes)
SPAR : hub_z, spar_len, spar_angle, spar_dia socket (bollard sleeve)
RING : ring_count, rope_dia hub (spar clamp)
PANEL : panel_z, panel_L, panel_W, panel_t spars (4 Γ swept up-and-out)
FOLD : fold (0 = packed β 1 = deployed) rings (rope storage cage)
panel (diamond solar panel)
![]() |
![]() |
| Logical groups β MAST / SPAR / RING / PANEL / FOLD, colour-coded on the canvas. | One build component β every slider wires into a single Python 3 script that returns the whole assembly. |
Why it's built this way (the reasoning that got here):
- One driver, one script. Rather than a sprawling web of native components, the geometry lives in a single readable Python 3 build script. The canvas stays legible; the algorithm carries the complexity. The per-stage logic is broken out for reference in
cinematic/scripts/components/β mast, hook, hub, spars, fabric hammock, panel canopy, storage rings, rigging ropes, carry strap. - A single
foldparameter collapses the whole thing.fold(0 β 1) is the deployment state: at 0 everything is packed inside the socket; at 1 it is the full 2.3 m rig. This is what makes it a deployable structure and not just a static model. - The design changed as the model matured β and the model shows it. Two V1 ideas were deliberately replaced in V2, driven by the parametric work itself:
- the rigid upper fabric canopy β a diamond solar panel (with a boolean-diff Γ30 mm mast hole);
- the single-perimeter diamond storage frame β a multi-ring "Chinese-lantern" cage (
ring_count, 1β12).
- Edited programmatically. The Grasshopper graph is driven by code through Cordyceps, a Rhino 8 automation bridge β parametric edits are made programmatically, not by hand-dragging wires. This is the studio's tell: architecture built like software.
Open
PlugInParasite.ghin Rhino 8 Grasshopper to drive it live.PlugInParasite.3dmis the companion Rhino document.
One parameter, fold, drives the entire structure from packed to deployed:
0.00 CLOSED β 0.25 TELESCOPE β 0.50 STICK β 0.75 CANOPY β 1.00 DEPLOYED.
The same states, rendered β the wireframe above is not a drawing of an idea, it is the actual model output; below, the identical geometry with materials:
Hand-carried and compact β telescoped up by hand β hooked over a limb or plugged onto a bollard β canopy opened. One fold parameter drives the whole transition (see above).
The structure is designed around three states:
- Folded β diamond-shaped, mast collapsed inside the socket, fabrics packed around the core. Hand-bag scale. (the
fold=0state) - Plugged onto a bollard β the open base sleeve is dropped over a Γ80β100 mm street bollard, then the mast is telescoped upward and the canopies open. Urban parking mode.
- Staked into ground β a pointed adapter screws into the base sleeve and is driven into soil. Camping mode.
The signature form is a stack of two inverted cones ("martini glass"): the lower wide canopy throws ground-level shade; the upper tier (now a solar panel) echoes a square-rigged ship's topsail. A small rectangular topsail and a pennant cap the rig.
The inhabited state, annotated: hammock slung between the four spars, canopy above, telescopic pole, ground socket.
Bottom-up, as generated by the Grasshopper build script:
| # | Component | Driven by | Description |
|---|---|---|---|
| 1 | Socket | socket_h |
Two-bore sleeve: lower bore grips a Γ90 mm bollard, upper bore accepts the bottom mast segment. |
| 2 | Mast | mast_h |
3 telescopic aluminium tubes, OD Γ32 β Γ25 β Γ19 mm, 80 mm overlap per joint, fully extended 2.2 m. |
| 3 | Hub | hub_z |
Single clamp hub on the mast that carries the four spars. |
| 4 | Spars | spar_len, spar_angle, spar_dia |
Four rods springing up and out; tip reach sets the canopy footprint. |
| 5 | Rings | ring_count, rope_dia |
1β12 horizontal rope loops between adjacent spar tips β the "Chinese-lantern" storage cage. |
| 6 | Panel | panel_z, panel_L/W/t |
Diamond solar panel with a boolean-diff Γ30 mm mast hole β replaced the V1 rigid upper canopy. |
Total deployed height β 2.3 m. Folded target β 0.7 m Γ 0.4 m Γ 0.15 m (hand-carry).
The design started physical: a bamboo-and-thread maquette and a whiteboard full of iterations, the same night as the first model.
AI-cinematic shorts of the deployment sequence, built from the parametric model as reference imagery (image-to-video). These are the curated survivors of ~40 generations across Seedance 2.0 and Kling 3.0 β the shot list, prompts and edit pipeline are in cinematic/docs/. Click to play on GitHub.
The process reel, playing inline β renders β parametric Grasshopper canvas β illustrated storyboard. Click it for the full-quality MP4 with sound.
| File | What it shows |
|---|---|
films/PlugInParasite_process_reel.mp4 |
The process reel β renders β parametric Grasshopper canvas β illustrated storyboard, in 20 seconds |
films/PlugInParasite_deployment_FINAL_9x16.mp4 |
Master cut β full deployment story, vertical 9:16 |
films/PlugInParasite_deployment_BLACK_v2_smooth_9x16.mp4 |
Black carbon-fibre variant, smoothed master |
films/PlugInParasite_WHITEFOAM_9x16.mp4 |
White-foam architectural maquette style |
films/PlugInParasite_COVER_1960s_anim.mp4 |
Animated 1960s-style illustrated cover |
films/PlugInParasite_annotated_walkthrough.mp4 |
Annotated 3D component walkthrough β hook, panel, hammock, socket + telescopic mast (Turkish captions) |
clips/ |
Individual shots: CARRY β SETDOWN β EXTEND β HOOK β OPEN β INHABIT β POV β FINALE |
The same story told across six media β cover illustration, photoreal film still, paper-craft maquette, product states, annotated scene, and the physical maquette on the whiteboard wall. Auto-advancing; stills in images/deck/.
Secondary to the parametric system, but included for reference: Fusion viewport captures and generated technical drawings (section 1:20, deployment sheet, branch detail β SVG/PNG/DXF plus the Python generators that draw them, in cinematic/drawings/).
| Front | Iso | Right |
|---|---|---|
![]() |
![]() |
![]() |
Current slider ranges and defaults on the Grasshopper canvas:
| Group | Slider | Range | Default |
|---|---|---|---|
| MAST | mast_h |
100β400 | 220 |
| MAST | socket_h |
5β30 | 15 |
| SPAR | hub_z |
20β150 | 20 |
| SPAR | spar_len |
30β200 | 90 |
| SPAR | spar_angle |
0β75Β° | 36.5 |
| SPAR | spar_dia |
0.2β2 | 1.45 |
| RING | ring_count |
1β12 | 6 |
| RING | rope_dia |
0.05β1 | 0.22 |
| PANEL | panel_z |
80β220 | 148.6 |
| PANEL | panel_L |
10β80 | 54 |
| PANEL | panel_W |
10β60 | 40 |
| PANEL | panel_t |
0.2β5 | 0.86 |
| FOLD | fold |
0β1 | 1 |
The Fusion V1 model exposes a larger set of 36 user parameters (mast tube diameters, wall thicknesses, sail rig, catenary rigging sag, etc.) β see cinematic/docs/GEOMETRY_SPEC.md and build_fusion_model.py.
| Path | Purpose |
|---|---|
PlugInParasite.gh |
Live parametric system β Grasshopper definition (open in Rhino 8) |
PlugInParasite.3dm |
Companion Rhino 8 document |
PlugInParasite.f3d |
Archival β Fusion 360 V1 (36 parameters) |
PlugInParasite.step |
Cross-CAD STEP export (Rhino, SolidWorks, FreeCAD, β¦) |
build_fusion_model.py |
Standalone Fusion script that recreates the V1 model from scratch |
grasshopper/ |
Canvas screenshots of the parametric definition |
cinematic/scripts/ |
Per-stage GHPython component logic (the fold/deploy rig) |
cinematic/films/, clips/, concept_boards/ |
Cinematic shorts, individual shots, AI concept boards |
cinematic/drawings/ |
Technical drawings (SVG/PNG/DXF) + Python generators |
cinematic/docs/ |
Geometry spec, storyboard, AI shot prompts, edit pipeline |
render_*.png, final_filmstrip.png |
Fusion viewport captures |
images/ |
Source sketches + maquette photographs |
Grasshopper (live): open PlugInParasite.gh in Rhino 8, adjust any slider, geometry regenerates through the build component.
Fusion V1 (from scratch):
- Fusion 360 β File βΈ New Design.
- Utilities βΈ ADD-INS βΈ Scripts and Add-Ins (
Shift+S). - Scripts tab β
+β browse tobuild_fusion_model.pyβ Run. - The full model β parameters, all components, all bodies β appears in a few seconds.
- V2 β Folded state polish. Verify the
fold=0packed configuration reads as a clean hand-carry volume. Grasshopper migration.β done β live parametric source of truth.Cinematic film.β done β see Films.- V2 β Upper rigging & fabric drape. Port the sail rig and lower-canopy fabric from the Fusion V1 into the Grasshopper script.
- V3 β Cloth simulation. Replace rigid loft surfaces with a draped cloth sim (Marvelous Designer / Houdini β back into GH).
- V3 β FEA on socket. Clamp force on the bollard and lateral stiffness under wind load.
- Prototype (the real goal). CNC-mill the aluminium socket and hubs; 3D-print hub clamp jaws; source carbon rod and rip-stop fabric; build and test a physical unit.
If you want to help make it real β manufacturing, materials, FEA, or just ideas β open an issue.
Built with β and credit to β the following:
| Tool | Role |
|---|---|
| Rhino 8 + Grasshopper | Parametric geometry engine β the live model |
| Cordyceps | Rhino 8 automation bridge β programmatic Grasshopper editing |
| Autodesk Fusion 360 | V1 solid model (36 parameters) |
| Claude / Claude Code (Anthropic) | AI pair-modeller β Python build logic, drawing generators, docs |
| Higgsfield | AI video generation platform |
| Seedance 2.0 Β· Kling 3.0 | Image-to-video models for the cinematic shots |
| Python 3 Β· ffmpeg | Geometry scripts and film edit pipeline |
Physical maquette, concept and design direction: Caglar Celik Architects.
- Code (Python scripts, Grasshopper definition): MIT.
- Design, images, videos and CAD models: CC BY-NC-SA 4.0 β share and adapt with attribution, non-commercial. For commercial use or manufacturing, contact the studio.
Β© 2026 Creative Computational Architecture β Caglar Celik Architects (CCA)


















