FastAPI backend + static web app for GPU workload scans and marketplace search.
- Supabase auth + repo/scan sync (optional); demo mode stores data locally
- Add repos via public GitHub URL, folder upload, or zip upload
- Codebase scanning: framework, workload profile, entrypoints, extracted params, risk analysis
- Optional OpenAI enrichment + AI suggestions
- Scan JSON viewer, copy, and download
- Per-repo workload and scan overrides
- GPU marketplace search with filters + ranking
- Providers: Vast.ai and Runpod
- GPUnity Agent page for repo analysis + GPU provisioning via Skypilot
Backend:
# one-time setup
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
# run
touch .env
uvicorn backend.main:app --reload --port 8000
Frontend:
# update web/config.js then
source .venv/bin/activate
python3 -m http.server 5500 --bind 127.0.0.1 --directory web
Open:
http://127.0.0.1:5500/index.html(landing)http://127.0.0.1:5500/app.html(workspace)http://127.0.0.1:5500/agent.html(GPUnity Agent)
Backend .env:
OPENAI_API_KEY(optional)ANTHROPIC_API_KEY(optional, enables agentic scanner)ANTHROPIC_MODEL(optional, defaultclaude-sonnet-4-20250514)AGENTIC_MAX_ITERATIONS(optional, reduce agentic steps to avoid rate limits)AGENTIC_MAX_TOKENS(optional, token cap per agentic call; default4096)GITHUB_TOKEN(optional, increases agentic scan GitHub API limits)MAX_FILE_SIZE_MBALLOWED_ORIGINSSKYPILOT_ENABLED(set totrueto runsky launch)SKYPILOT_CLOUD(defaultaws)SKYPILOT_STOP_ACTION(stopordown)SKYPILOT_LAUNCH_TIMEOUT(seconds, default900)SKYPILOT_KEEP_WORKDIR(set totrueto keep extracted repo + YAML for debugging)SKYPILOT_USE_JOBS(set totrueto usesky jobs launch)SKYPILOT_RETRY_UNTIL_UP(set totrueto pass--retry-until-upforsky launch)SKYPILOT_DETACH_RUN(set tofalseto keepsky launchattached; defaulttrue)SKYPILOT_LOGS_NO_FOLLOW(set tofalseto allow log streaming; defaulttrue)SKYPILOT_ALLOW_ONDEMAND_FALLBACK(set totrueto use spot with on-demand fallback)SKYPILOT_REGION/SKYPILOT_ZONE(optional pinning of location)SKYPILOT_JOB_RESTARTS(set to a number to enable job recovery retries)SKYPILOT_CATALOG_ENABLED(set totrueto align recommendations withsky show-gpus)SKYPILOT_PIP_TIMEOUT(pip timeout seconds for setup, default120)SKYPILOT_PIP_RETRIES(pip retries for setup, default5)SKYPILOT_PIP_INDEX_URL(optional pip index override)SKYPILOT_PIP_EXTRA_INDEX_URL(optional pip extra index)GPU_AGENT_ENABLED(set tofalseto disable the LangChain GPU planner)GPU_AGENT_MAX_ATTEMPTS(search retries, default4)GPU_AGENT_MAX_QUESTIONS(clarifying questions cap, default4)GPU_AGENT_MODEL(override the OpenAI model for GPU planning)GPU_AGENT_TEMPERATURE(LLM temperature, default0.2)
Frontend web/config.js:
apiBaseUrlsupabaseUrl,supabaseAnonKey(optional)
- Public GitHub repositories only.
- AI scan requires an OpenAI API key on the backend.
- Render blueprint supported via
render.yaml. scripts/render_build.shwritesweb/config.jsduring static build.- For Render production, keep
ALLOWED_ORIGINSlocked to your web domain. - Rate limiting is preconfigured in
render.yamlwith Redis storage; update limits viaRATE_LIMIT_*env vars.