2026-06-23 13:46:36 +02:00
|
|
|
|
# Blender vs geodesic-dome-mcp — Capability Comparison
|
|
|
|
|
|
|
|
|
|
|
|
2026-06-23 | OSA (mother node) | FreeBSD 15.0
|
|
|
|
|
|
|
|
|
|
|
|
## The problem
|
|
|
|
|
|
|
|
|
|
|
|
Generate geodesic dome wireframes for architectural visualization and
|
|
|
|
|
|
bill-of-materials calculation. The obvious answer was Blender — it has
|
|
|
|
|
|
`bpy.ops.mesh.primitive_ico_sphere_add()` built in.
|
|
|
|
|
|
|
|
|
|
|
|
## Before: Blender
|
|
|
|
|
|
|
2026-06-23 18:08:58 +02:00
|
|
|
|
| Metric | Value |
|
|
|
|
|
|
| -------------------- | ------------------------------------------------------------- |
|
|
|
|
|
|
| Packages installed | 53 |
|
|
|
|
|
|
| Download size | 323 MiB |
|
|
|
|
|
|
| Installed size | 1 GiB |
|
|
|
|
|
|
| Key dependencies | llvm19, ffmpeg, openimageio, opencolorio, openvdb, pulseaudio |
|
|
|
|
|
|
| Headless mode | `blender --background` (still pulls X11 deps) |
|
|
|
|
|
|
| Dome generation time | ~14s (Eevee render, 2000×2000) |
|
2026-06-23 13:46:36 +02:00
|
|
|
|
|
|
|
|
|
|
## After: geodesic-dome-mcp
|
|
|
|
|
|
|
2026-06-23 18:08:58 +02:00
|
|
|
|
| Metric | Value |
|
|
|
|
|
|
| -------------------- | ---------------------------------------------- |
|
|
|
|
|
|
| File size | 6 KB (294 lines of Python) |
|
|
|
|
|
|
| Dependencies | numpy, Pillow (already installed on all nodes) |
|
|
|
|
|
|
| Dome generation time | <1s (wireframe), sub-second (BOM only) |
|
|
|
|
|
|
| Headless | Always — no X11, no GPU, no display server |
|
|
|
|
|
|
| Outputs | Wireframe PNG + structural BOM (JSON) |
|
2026-06-23 13:46:36 +02:00
|
|
|
|
|
|
|
|
|
|
## Capability impact
|
|
|
|
|
|
|
2026-06-23 18:08:58 +02:00
|
|
|
|
| Capability | Before (Blender) | After (geodesic-dome-mcp) |
|
|
|
|
|
|
| ------------------------ | -------------------------------- | ---------------------------------- |
|
|
|
|
|
|
| Can run on 32GB USB ISO? | ❌ (1 GiB, exceeds headroom) | ✅ (6 KB, negligible) |
|
|
|
|
|
|
| Can run on 12GB RAM VPS? | ❌ (would fit disk but overkill) | ✅ (already running) |
|
|
|
|
|
|
| Can run on bare-metal? | ✅ (if installed) | ✅ (always) |
|
|
|
|
|
|
| Structural BOM? | ❌ (needs separate script) | ✅ (built-in) |
|
|
|
|
|
|
| Half-sphere mode? | Manual mesh cut | ✅ (`half=true`) |
|
|
|
|
|
|
| Connector analysis? | ❌ | ✅ (3/4/5/6-way counts) |
|
|
|
|
|
|
| Strut length table? | ❌ | ✅ (grouped by size) |
|
|
|
|
|
|
| Material cost estimates? | ❌ | ✅ (glass/polycarbonate/insulated) |
|
2026-06-23 13:46:36 +02:00
|
|
|
|
|
|
|
|
|
|
## Registering capabilities
|
|
|
|
|
|
|
2026-06-24 09:50:25 +02:00
|
|
|
|
This comparison feeds into the mother node's PostgreSQL `hive_nodes` table.
|
2026-06-23 13:46:36 +02:00
|
|
|
|
When a node registers its hardware profile, the capability derivation trigger
|
|
|
|
|
|
marks nodes that can run `geodesic-dome-mcp` (all of them — numpy + Pillow
|
|
|
|
|
|
are universal). Nodes that have Blender installed get an additional
|
|
|
|
|
|
`has_blender: true` capability for 3D rendering workloads.
|
|
|
|
|
|
|
|
|
|
|
|
## OSA as example (registered 2026-06-23)
|
|
|
|
|
|
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"hostname": "osa.smilepowered.org",
|
|
|
|
|
|
"ram_gb": 12,
|
|
|
|
|
|
"cpu_cores": 6,
|
|
|
|
|
|
"capabilities": {
|
|
|
|
|
|
"has_gpu": false,
|
|
|
|
|
|
"cpu_only": true,
|
|
|
|
|
|
"geodesic_dome_mcp": true
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
12GB RAM, no GPU, but `geodesic_dome_mcp` runs fine. No Blender needed.
|