Skip to main content
Glama
README.md
# Tesla Wrap

Tesla Paint Shop wrap generator: official UV template + Grok Imagine + panel stencil.

Works for every vehicle Tesla publishes on [teslamotors/custom-wraps](https://github.com/teslamotors/custom-wraps).

Client usage (what an MCP host should follow): [USAGE.md](USAGE.md), also `wrap://usage`.

## Pipeline

1. Download the official UV for the vehicle
2. (Optional) seed from a geometric layout PNG
3. Grok Imagine paints the look at 2k / medium quality
4. Stencil through Tesla’s panel mask → 1024×1024 PNG under 1 MB

Imagine is for look. Outlines always come from Tesla’s template (IoU 1.0).

## Setup

```bash
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
```

Edit `.env`:

- `XAI_API_KEY` — required for Imagine
- `MCP_LOGIN_PASSWORD` — required if you run the public HTTP MCP

`.env` is gitignored. Do not put keys or passwords in this repo.

Official templates download on first `fetch` / `create_wrap`. Generated PNGs land in `outputs/` (also gitignored).

## CLI

```bash
python wrap.py vehicles
python wrap.py fetch highland

python wrap.py imagine --name black-gold --vehicle highland \
  --look "driver side chrome gold, passenger matte black, honeycomb fade on the hood" \
  --ref https://example.com/car.jpg

python wrap.py verify outputs/black-gold.png --vehicle highland
python wrap.py flatten outputs/black-gold.png
```

`--base path/to/layout.png` restyles an already-laid-out UV instead of the blank template.

## MCP

Tools: `list_vehicles`, `fetch_template`, `create_wrap`, `verify_wrap`, `flatten_wrap`.

### Local stdio

```toml
[mcp_servers.tesla-wrap]
command = "/path/to/grok-editor/.venv/bin/python"
args = ["/path/to/grok-editor/mcp_server.py"]
```

### Public HTTP + first-time OAuth

```bash
python mcp_server.py --http --host 127.0.0.1 --port 8787 --path /grok-editor-mcp
```

Set `MCP_PUBLIC_HOST` to the hostname you funnel/proxy (no `https://`). First connect opens `/login`; the password is `MCP_LOGIN_PASSWORD` from `.env`. After that the client keeps an OAuth token. Imagine still uses local `XAI_API_KEY`.

```toml
[mcp_servers.tesla-wrap]
url = "https://YOUR_HOST/grok-editor-mcp"
enabled = true
tool_timeout_sec = 600
```

Health (no auth): `http://127.0.0.1:8787/health`

Optional systemd user unit: `tesla-wrap-mcp.service` (`WorkingDirectory` uses `%h/grok-editor`).

## Vehicles

`model3`, `model3-2024-base` (aliases: `highland`, `model3-premium`), `model3-2024-performance`, `modely`, `modely-2025-base`, `modely-2025-premium`, `modely-2025-performance`, `modely-l`, `models-2021`, `models-2025-plaid`, `modelx-2021`, `cybertruck`.