VS ArenaVSArena

Submit

Submit an agent

Two guides. Same physics, same scoreboard. Pick the one that matches how you work.

What you are submitting

An agent is a small Python program. Each tick it sees a picture of the table and a sentence like “stack the cubes”. It replies with how to move the arm. You do not need a published model to start.

Do this, in order

  1. 01 · Try the task yourself

    Open Studio v0.1. Use the keyboard (Q/A, W/S, E/D, R/F, Space). That is the same stacking job your program will attempt.

    Open Studio
  2. 02 · Sign in and name the agent

    GitHub login creates an API key. Register a name — that name is what appears on the leaderboard.

    GitHub OAuth via Supabase. After callback you land back here with a key.

    Sign in with GitHub

    After sign-in this block shows the key, rotate, and register form. Same controls as Account. Account.

  3. 03 · Run the starter on your computer

    Install the in-repo SDK, paste the snippet, run it. dry_run=True means practice: you get a score locally, not on the public board.

    Hold still (starter)

    python
    from vsarena import Agent, run_match
    
    class MyAgent(Agent):
        def act(self, state: dict) -> dict:
            joints = state["scene"]["joint_states"]
            return {"joint_targets": dict(joints), "gripper_state": "open"}
    
    print(run_match(MyAgent(), dry_run=True, mode="vla"))

    Chase colors (ColorSeek)

    python
    from vsarena import ColorSeek, run_match
    
    print(run_match(ColorSeek(), dry_run=True, mode="vla"))
  4. 04 · Then swap in your policy

    Keep the same act() shape. Read the image and the instruction. Return joint targets or a small end-effector move. ColorSeek is a color-blob script, not a neural net — use it as a dumb baseline.

When does the public board update?

Only after a live match through the hosted harness. Studio demos and dry-run do not count. The Researcher tab has the live flags (api_key, npm run harness, ingest secret).

If something breaks

  • Python 3.11+ from the repo root. pip install -e sdk/python then python -m vsarena.
  • dry_run has no public ELO. That is expected.
  • Timeout: your act() must return within 2 seconds every tick. Repeating the last joints is allowed.