diff --git a/.github/workflows/pages.yaml b/.github/workflows/pages.yaml deleted file mode 100644 index ee16cf8..0000000 --- a/.github/workflows/pages.yaml +++ /dev/null @@ -1,45 +0,0 @@ -name: Deploy landing page - -# Publishes site/ to GitHub Pages. There is no build step: the directory is -# uploaded as authored. The Pages source must be set to "GitHub Actions". - -on: - push: - branches: [main] - paths: - - "site/**" - - ".github/workflows/pages.yaml" - workflow_dispatch: - -permissions: - contents: read - pages: write - id-token: write - -concurrency: - group: pages - cancel-in-progress: false - -jobs: - deploy: - name: Build and deploy - runs-on: ubuntu-latest - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} - steps: - - uses: actions/checkout@v7.0.1 - with: - persist-credentials: false - - - name: Configure Pages - uses: actions/configure-pages@v6.0.0 - - - name: Upload site directory - uses: actions/upload-pages-artifact@v5.0.0 - with: - path: site - - - name: Deploy - id: deployment - uses: actions/deploy-pages@v5.0.0 diff --git a/site/.nojekyll b/site/.nojekyll deleted file mode 100644 index e69de29..0000000 diff --git a/site/README.md b/site/README.md deleted file mode 100644 index 6bc6ad7..0000000 --- a/site/README.md +++ /dev/null @@ -1,85 +0,0 @@ -# mlx-spatial landing page - -Static GitHub Pages site for [mlx-spatial](https://github.com/appautomaton/mlx-spatial), -published at . - -## Editing rule - -**Nothing on this page carries a number or a status that has to be -maintained.** Face counts, timings, quality figures, and per-pipeline -readiness all live in the repository, where they are produced and where they -change. The page states what does not change — the task each pipeline -performs, the file it leaves behind, the shape of the mesh stage, the scope — -and links out for anything measured. - -That is also why the page lists five pipelines and not six: a pipeline still -in development would need its badge revised the day it graduates. The -capability table in the root README carries that state instead, and the page -points at it. - -## Stack - -A single self-contained `index.html` — no build step, no framework. Styles and -the small amount of JS (theme toggle, mobile menu, scroll reveal) are inline. - -- **Type:** Zodiak (display), Synonym (body), DM Mono (data). The display face - is a high-contrast serif because the subject is *making objects* — it should - read as carved, not as UI chrome. -- **Colour:** the XYZ axis convention every 3D tool shares — X red, Y green, - Z blue — on the neutral grey of a viewport. Sections advance through the - three axes, so scrolling walks the gizmo. The choice is semantic: anyone who - has opened a 3D application reads those three colours before the words. -- **Signature:** the headline sits inside a bounding box whose corners - converge onto it on load. Selecting an object in any 3D tool draws exactly - this, and the fit is the idea — the library turns a flat image into - something that has bounds. -- **Ground:** an isometric lattice rather than a square grid, so the page is - in three dimensions before anything is read. -- **Theme:** light by default. Light/dark via `data-theme` on ``, - persisted in localStorage, falling back to the OS scheme. Deep-link with - `?theme=light` / `?theme=dark`. -- **Icons:** hand-drawn SVG, no icon library. Two rules here are easy to break: - - The dash rules select `.d`, not `[pathLength]`. Blink does not invalidate - a camelCase attribute selector on an SVG child when a class lands on an - ancestor, so selecting the attribute leaves every icon undrawn. A new - stroke needs `class="d"` as well as `pathLength="100"`. - - A filled shape carries its resting opacity in `--fill-o`, because a CSS - `opacity` outranks the SVG presentation attribute and would otherwise - flatten a translucent solid into an opaque blob. -- **Motion:** [Motion](https://motion.dev) 13.0.0 from jsDelivr, pinned. It - only drives scroll reveals; the bounding box is pure CSS. The import is - guarded — if the CDN fails, everything is revealed rather than left hidden. -- **Responsive:** breakpoints at 720px, 940px, and 1040px. -- `prefers-reduced-motion` is respected — every animation renders in its final - state. - -Contrast was measured on every text node in **both** themes, not just the one -the page loads in. - -## The share card - -`assets/og.png` is 2400×1260 (1.91:1 at 2×), rendered from `assets/og.html` -with the real webfonts rather than approximated. The source is committed so -the card can be re-cut when the headline changes: - -1. open `site/assets/og.html` at a 1200×630 viewport, `deviceScaleFactor` 2; -2. wait for `document.fonts.ready` — screenshotting early bakes in the - fallback face, which is the whole reason this is a real browser render; -3. capture the viewport to `site/assets/og.png`. - -`og.html` carries `noindex` and is not in the sitemap; it deploys with the -rest of the directory only because the workflow uploads `site/` as-is. - -## Deploy - -Published by `.github/workflows/pages.yaml` on every push to `main` that -touches `site/`. There is no build: the workflow uploads this directory as-is. -The Pages source must be set to **GitHub Actions**. `.nojekyll` keeps Jekyll -out of the way. - -## Local preview - -```bash -python3 -m http.server -d site 8000 -# open http://localhost:8000/ -``` diff --git a/site/assets/og.html b/site/assets/og.html deleted file mode 100644 index d1f4bf3..0000000 --- a/site/assets/og.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - -mlx-spatial — Open Graph card source - - - - - - - - - -
-
-
-
-

MLX · Apple silicon · inference only

-
- - mlx-spatial -
-
- -
- - -

Pixels in.
Geometry out.

-
- -
- image - mesh - scene - - GLB - PLY - NPZ -
-
-
- - diff --git a/site/assets/og.png b/site/assets/og.png deleted file mode 100644 index e70debf..0000000 Binary files a/site/assets/og.png and /dev/null differ diff --git a/site/favicon.svg b/site/favicon.svg deleted file mode 100644 index d76c7c0..0000000 --- a/site/favicon.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - diff --git a/site/index.html b/site/index.html deleted file mode 100644 index 459fbd1..0000000 --- a/site/index.html +++ /dev/null @@ -1,808 +0,0 @@ - - - - - - -mlx-spatial · Image to 3D on Apple silicon - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - mlx-spatial - - - - -
-
- -
- - -
- -
-

MLX · Apple silicon · inference only

- -
- - - - -

Pixels in.
Geometry out.

-
- -

- image - mesh - scene -

- -

- An open-source library for 3D and spatial inference in MLX. Object - reconstruction, image-to-mesh, scene geometry, Gaussian splats, and - multi-view bundles — running on the Apple GPU, with a native Metal - mesh pipeline behind them. -

- -

- Read the source ↗ - Start - Weights not bundled -

-
-
- - -
-
-

What it is

-

The run ends in a file, not a preview.

- -
-
- -

Pure MLX on the Apple GPU

-

Diffusion, transformer, and reconstruction stacks run in MLX. A native C++/Metal extension carries the mesh work that does not belong in Python.

-
- -
- -

Real files, not renders

-

Every pipeline writes something a tool can open — a GLB, a PLY, an NPZ bundle. Drop it into Blender or a viewer and keep working.

-
- -
- -

Weights stay outside

-

Checkpoints are downloaded separately and validated before use. Nothing is vendored into the wheel, and every upstream licence stays with its weights.

-
-
-
-
- - -
-
-

Pipelines

-

Different questions want different files.

-

- These pipelines deliberately do not share one output type. A splat is - not a mesh, and a scene bundle is neither. The mapping is the product. -

- -
-
- -

Object reconstruction

-

image + mask→Gaussian PLY, optional GLB

- SAM 3D Objects -
- -
- -

Image to textured mesh

-

object-centric RGB/RGBA→shape OBJ or textured GLB

- TRELLIS.2 -
- -
- -

Scene reconstruction

-

scene image or frames→camera, depth, normals, point cloud

- HY-WorldMirror 2.0 -
- -
- -

Image to Gaussian splat

-

object-centric RGB/RGBA→3DGS PLY

- LiTo -
- -
- -

Multi-view scene bundle

-

related scene views→NPZ of depth, cameras, world points

- MapAnything -
-
- -

- Every pipeline ships a command-line entry point, and each one names its - own output rather than hiding behind a shared wrapper. More pipelines - are in development; the - repository - tracks which paths are release-ready. -

-
-
- - -
-
-

SpatialKit

-

Inference is only half of an asset.

-

- A model's raw output is rarely something you can ship. SpatialKit is - the mesh half — simplification, unwrapping, and baking, written - against Metal rather than handed to a CPU library. -

- -
-
- - Simplify -

Quadric error edge collapse, running in MLX, down to a face budget you choose.

-
- -
- - Unwrap -

Clustered xatlas charts, so the texture space follows the surface instead of fighting it.

-
- -
- - Bake -

Physically based texture baking on Metal, not a kdtree scatter on the CPU.

-
- -
- - Export -

A GLB with its materials attached, plus the artifacts that show what happened on the way.

-
-
-
-
- - -
-
-

Start

-

One command per pipeline.

- -
-
-
# Python 3.13, Apple silicon
-uv add mlx-spatial
-

- The package is on - PyPI. Releases - can lag main, so a checkout keeps you on the code the - repository documents. -

-
-
-
uv run mlx-spatial-sam3d --help
-uv run mlx-spatial-trellis2 --help
-uv run mlx-spatial-hyworld2 --help
-uv run mlx-spatial-lito --help
-uv run mlx-spatial-mapanything --help
-

- Weights download separately into weights/ and are - validated before a run. Converted checkpoints live on - Hugging Face. -

-
-
-
-
- - -
-
-

Scope

-

What this is not.

- -
-
-

Not a training framework

-

Inference only. There is no optimiser, no dataset loader, and no fine-tuning path.

-
-
-

Apple silicon

-

MLX targets the Apple GPU, and the mesh extension is built against Metal. There is no CUDA path.

-
-
-

Quality still moving

-

Texture and mesh quality are actively improving, and some paths are still in development. The repository says which.

-
-
-
-
- - - - -
- - - - diff --git a/site/robots.txt b/site/robots.txt deleted file mode 100644 index 5bf8d51..0000000 --- a/site/robots.txt +++ /dev/null @@ -1,4 +0,0 @@ -User-agent: * -Allow: / - -Sitemap: https://appautomaton.com/mlx-spatial/sitemap.xml diff --git a/site/sitemap.xml b/site/sitemap.xml deleted file mode 100644 index 7e593db..0000000 --- a/site/sitemap.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - https://appautomaton.com/mlx-spatial/ - 2026-08-07 - monthly - 1.0 - -