feat(trace-ui): make deployable to Vercel
loading diff…
The trace-ui is now hosted at https://trace-ui-blue.vercel.app, but the version of main.py on next cannot be redeployed from source — it shells out to the aws CLI (which Vercel's serverless runtime doesn't have), so /api/auth/status returns 500 immediately. This PR ports the ad-hoc patches that made the initial deployment work back into the repo so future redeploys Just Work.
_check_aws_identity / _check_s3_access now use boto3 instead of subprocess.run(["aws", ...]).uvicorn inside if __name__ == "__main__" so Vercel doesn't need it.StaticFiles mount and / route with STATIC_DIR.exists() so module import doesn't fail in serverless environments where static assets are served directly by the CDN.trace-ui/api/index.py — Vercel's @vercel/python entry point that re-exports the FastAPI app from main.py.trace-ui/vercel.json — routes /api/* to the serverless function and everything else to static/.trace-ui/requirements.txt — deps for Vercel's Python runtime. Also added a .gitignore exception since requirements.txt is globally ignored in this repo.Local (unchanged):
aws sso logincd trace-ui && uv run python main.pyVercel (redeploy):
cd trace-ui && vercel deploy --prod (env vars AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY / AWS_DEFAULT_REGION are already set on the project)curl https://trace-ui-blue.vercel.app/api/auth/status returns {"authenticated": true, ...}subprocess import is kept because _run_assume_debug still uses it — that's a local-only helper for the SSO assume-role flow, never invoked on Vercel (which uses permanent IAM keys).trace-ui-readonly IAM user with read-only access to integrator-artifacts-prod and integrator-artifacts-staging.🤖 Generated with Claude Code