Skip to content

System 1 Arcade 0.2.0

Choose a tag to compare

@brennanMKE brennanMKE released this 28 Sep 03:46
· 4 commits to main since this release

The built-in agent no longer needs Python.

  • Laya runs inside the app through laya-go, a pure-Go
    port of the Laya package: no Python, PyTorch or virtual environment to set up. The first start
    downloads the model (about 800 MB) into the standard Hugging Face cache, with progress in the
    side panel; a model the Python package already downloaded is used as is. The model stays loaded
    while the agent plays and is freed when you stop it.
  • Same answers as before. Over 343 recorded game requests the built-in agent gives the Python
    server's answers: every choice the same and 99.86% of numbers identical to 4 decimals (the rest
    differ by 0.0001). The answer cache (SYSTEM1_LAYA_CACHE) works as before.
  • Runs on the CPU (Apple Accelerate on macOS). agents/laya_server.py still works as a custom
    agent and runs Laya on the GPU.
  • Test connection for the built-in agent asks the loaded model, or says whether the model still
    has to be downloaded.
  • The app keeps App Nap away while an agent plays. With the window hidden or the display
    asleep, macOS throttled the app, and the built-in agent's new sentences took up to 2.3 s instead
    of about 0.1 s: Frogger seed 1 ended at 3,250–4,900 points in the app against 20,420 headless.
  • The agent asks at most once per game tick in realtime; with answers from the cache it used to
    ask thousands of times a second and keep a CPU core busy.
  • cmd/headless -agent laya plays with the built-in agent, and -agent <url> with a custom one,
    for benchmarks without Python or a window.
  • The app logs the model download's progress (every 10%) and, at the end of each game, how
    many decisions the agent made and how long they took (median, p99, slowest).
  • SYSTEM1_AUTOSTOP_AFTER=<duration>, with SYSTEM1_AUTOSTART, stops the agent that long
    after launch, for unattended memory checks. Test-only and off unless set.
  • scripts/run-agent-vm.sh --builtin plays with the built-in agent in a VM with no Python on the
    app's PATH, watching that no Python process ever starts; --fresh-download makes the app fetch
    the model itself, and --stop-after measures memory after the agent stops. Verified: all three
    games played in a VM with no Python, the app started no process, a fresh download matched the
    host's copy, and stopping the agent took the app from 1.7 GB to 186 MB. In a VM the model runs
    2.5–6 times slower than on the host, which costs Frogger points (and whole games when the host
    is busy); Tetris and Space Invaders played as on the host.
  • SYSTEM1_SOUND=off mutes a session, for automated and autostarted runs, without changing
    the saved sound preference. scripts/run-agent-vm.sh sets it.
  • scripts/build.sh --agent is now --python-tools (-PythonTools on Windows), and is only
    needed for the Python tools in agents/. SYSTEM1_PYTHON is gone. Building needs Go 1.27.

Install: download System1Arcade-0.2.0.dmg, open it and drag System 1 Arcade to
Applications. It's a universal app (Apple silicon and Intel), signed with Developer ID and
notarized by Apple. Requires macOS 11 or later.

Built-in agent: runs Laya inside the app, with no Python. On first start it downloads the
Laya model (about 800 MB) into the Hugging Face cache while the game waits.