An unofficial, open-source, noncommercial browser tool for exploring visual concepts on Valve's official Steam Machine exterior geometry.
No account. No uploads. No backend.
This project is not affiliated with, sponsored by, or endorsed by Valve Corporation.
- renders a verified, web-optimized derivative of Valve's external-shell CAD;
- places the model in an original, brightly lit living-room gaming scene;
- switches the editor, save/export flows, About page, and license page between English and Simplified Chinese;
- applies thirteen complete visual themes and constrained body, faceplate, light, graphic, text, and scene presets;
- auto-saves drafts and named versions in the current browser;
- imports and exports schema-validated design files;
- shares compressed configurations through a URL Fragment;
- exports attributed PNG renders.
The editor is a visual configurator. It is not mechanical CAD and does not produce printable or manufacturing-ready parts.
Community-made themes are welcome. You can propose a theme without writing code:
- Open the deployed customizer.
- Build a complete theme using the existing material, faceplate, lighting, graphic, text, and scene controls.
- Use Save → Download design file to export the
.machine-design.json, then use Export to create an attributed PNG preview. - Open the Community theme proposal form.
- Attach both files, describe the concept, and identify the source and license of anything that is not built into the customizer.
Theme names, short labels, and visual concepts must be original. Do not submit third-party game artwork, characters, franchise names, logos, Valve/Steam branding, advertising, affiliate content, or material that implies official endorsement. Submissions must remain noncommercial.
To implement a theme in code:
-
Fork the repository and create a focused branch.
-
Add a stable lower-case
ThemeIdinapp/customizer/types.tsand the matching schema value inapp/customizer/schema.ts. -
Add one complete entry to
THEMESinapp/customizer/presets.ts. Include English and Chinese labels, three swatches, and explicit body, faceplate, accent, lighting, graphic, text, and scene values. -
Update the preset count and behavior tests. Add localization entries if the theme introduces new interface copy.
-
Run:
npm test npm run lint npm run build:static -
Open a pull request with a PNG preview, the design file, a short rationale, and an asset/license declaration.
Accepted application code and preset definitions are distributed under MIT. Any contribution derived from Valve CAD remains separately subject to CC BY-NC-SA 4.0. Maintainers may request changes or decline a proposal to keep the collection distinct, readable, lawful, and technically stable.
Requires Node.js 22.13 or newer.
npm install
npm run devValidation:
npm run cad:build
npm test
npm run lint
npm run buildThe evaluated source is Valve's
steam_machine_3d.stp
at commit
e6d83115e43fb2cc9421e1773e2b70331b74f519.
The conversion script verifies this source SHA-256 before producing the GLB:
7e75bb858a58f050bf744a5717e1b803d8f9269c2322063206ff43b3797cd2b3
See:
This repository uses mixed licenses:
| Material | License |
|---|---|
| Application source code | MIT |
| Valve source CAD | CC BY-NC-SA 4.0 |
| Derived GLB and inseparable model modifications | CC BY-NC-SA 4.0 |
| Third-party libraries and fonts | Their respective upstream licenses |
| Valve/Steam trademarks | Not licensed by the Creative Commons license |
The CAD and derived model are for noncommercial use. Do not relicense them under MIT, add DRM, imply Valve endorsement, or use them for sales, advertising, affiliate activity, paid access, or other primarily commercial purposes.
Design state is processed on-device. This version has no account system,
analytics profile, uploads, database, or application API. Shared designs live
inside the URL after #d=, which is not sent as part of normal HTTP requests.
Read CONTRIBUTING.md before submitting code, presets, or model changes. Model-derived contributions use a different license from application code.