Self-hosted GPU sharing platform · March 2026
GPUShare
My desktop GPU sits idle most of the day. I built a way for friends to share it for local AI and rendering, with the limits of a home machine visible.
Solo engineer. Product, React and FastAPI, the GPU integration, the accounting, and the setup scripts.
kWh rate×GPU watts=price No markup
A GPU that sits idle most of the day
My desktop GPU sits idle most of the day. GPUShare turns that spare capacity into something a trusted group can use, without pretending to be cloud infrastructure: when the machine is off, the interface says so.
More than a model proxy
The React application includes password authentication, bootstrap-admin and invite flows, one-time API-key creation, account and admin views, model selection, chat, rendering, and MCP server configuration. JWTs and bcrypt-hashed API keys protect public routes; raw API keys are shown only when created.
Two services, one trust boundary
The Vercel frontend reaches public middleware through a Cloudflare Tunnel. That middleware owns authentication, billing, database-backed account operations, aggregation, and short-lived in-process caches. It forwards hardware work with a shared internal secret to a backend that runs Ollama, Blender, GPU health checks, MCP tools, and file operations. The tunnel targets middleware rather than the backend, although Docker Compose still publishes the backend port on the host.
Local and cloud are different paths
OpenAI-compatible chat endpoints support streaming responses and structured tool calls. Ollama requests execute on the host and pass through a process-local GPU queue. OpenRouter is an optional route for selected cloud models or the configurable auto model; it is not an automatic retry when the local host fails, and selected cloud requests send prompt data to that provider.
Exact ledger, estimated energy
Credits and charges are append-only rows whose balance is calculated by summing the ledger. Local inference cost uses the configured electricity tariff, detected or configured GPU and system wattage, estimated token counts, and a default throughput assumption. Render cost uses elapsed job time and configured wattage. OpenRouter usage uses provider pricing. These are allocation estimates, not per-request wall-power measurements.
Rendering assumes trusted files
A render submission validates the .blend extension and size, removes Blender text blocks, uploads the sanitised file to optional R2 storage, and queues a separate worker to render and package the output. Script stripping reduces risk but is not a complete sandbox, so the current design should not accept adversarial uploads.
The installer is currently broken
The macOS, Linux, and Windows scripts detect hardware, recommend model sizes, estimate wattage, generate secrets, configure optional services, and run health checks. After the backend/middleware split, their migration and troubleshooting commands still reference the removed fastapi Compose service. That must be corrected before the installer can again be described as an end-to-end one-click path.
Outcome
The application implements auth, local and optional cloud inference, MCP tool routing, queued rendering, and append-only usage accounting. Host availability and a stale installer migration command remain operational limits; no adoption claim is made.