Agent Notes
Local Dev Servers
- Frontend: from
frontend/, runnpm ciif dependencies are missing, thennpm run dev. - Backend: from
backend/, runuv run uvicorn main:app --host ::1 --port 7860. - Frontend URL: http://localhost:5173/
- Backend health check:
curl -g http://[::1]:7860/api - Frontend proxy health check:
curl http://localhost:5173/api
Notes:
- Vite proxies
/apiand/authtohttp://localhost:7860. - If
127.0.0.1:7860is already owned by another local process, binding the backend to::1lets the Vite proxy resolvelocalhostcleanly. - Prefer
npm ciovernpm installfor setup, sincenpm installmay rewritefrontend/package-lock.jsonmetadata depending on npm version. - Production defaults to the Bedrock Claude model. For local development with a personal Anthropic key, set
ANTHROPIC_API_KEYandML_INTERN_CLAUDE_MODEL_ID=anthropic/claude-opus-4-6before starting the backend. Other models are selected through the app's model switcher.
Development Checks
- Before every commit, run
uv run ruff check .anduv run ruff format --check .. - If formatting fails, run
uv run ruff format ., then re-run the Ruff checks before committing.
GitHub CLI
- For multiline PR descriptions, prefer
gh pr edit <number> --body-file <file>over inline--bodyso shell quoting,$env-var names, backticks, and newlines are preserved correctly.
GitHub PRs
- Open code changes as GitHub PRs first. Do not push code changes directly to the Hugging Face Space deployment branch or Space remote before the PR has been opened, reviewed, and merged, unless the user explicitly asks to bypass the PR flow.
Hugging Face Space Deploys
- The Space remote is
spaceand points tohttps://huggingface.co/spaces/smolagents/ml-intern. - Deploy GitHub
mainto the Space from the localspace-mainbranch by mergingorigin/mainintospace-mainwith a single merge commit, then pushingspace-main:mainto thespaceremote. - Keep the Space-only README frontmatter on
space-main;.gitattributesshould containREADME.md merge=oursand the local repo config should includemerge.ours.driver=true. - Local dev commonly uses a personal
HF_TOKEN, but the deployed Space uses HF OAuth tokens. When adding Hub features, make sure the Space READMEhf_oauth_scopesfrontmatter and the backend OAuth request inbackend/routes/auth.pyinclude the scopes required by the Hub APIs being called. A feature can work locally with a broad PAT and still fail in production with 403s if OAuth scopes are missing; after changing scopes, users may need to log out and log in again to receive a fresh token. - Recommended deploy flow:
git pull --ff-only origin main
git switch space-main
git config merge.ours.driver true
git merge --no-ff origin/main -m "Deploy $(date +%Y-%m-%d)" \
-m "Co-authored-by: OpenAI Codex <codex@openai.com>"
git push space space-main:main
git switch main