# ArmFarm Cars: AGENTS.md ## Connect from the rental page Rental page: https://armfarm-dashboard.tail00b78d.ts.net:8443/cars/ This guide is public and can be read without signing in or running JavaScript. On the rental page, choose the hardware and start a session. An SSH key downloads automatically; the page supplies the complete connection command for your OS. Run that command on the customer's computer. All commands below run **inside SSH** unless explicitly labeled otherwise. The workspace already contains its tools and configuration; do not install packages or discover controller addresses. An agent given only the page URL can follow its AGENTS.md link. To use an existing rental, obtain the displayed SSH command and the local path to the matching key from the customer. A public URL does not carry their reservation or credentials. Keep private key contents on the customer's computer; never paste or upload them. Reading instructions does not authorize movement. For an authorized task, inspect current camera images, use bounded commands, and do not replay uncertain motion. Other rentals: [Arms](/rental/AGENTS.md), [Sandbox](/sandbox/AGENTS.md), [Cars](/cars/AGENTS.md). ## First move for a person watching the live cameras Keep the rental page's live camera visible and check clearance. Paste this one line in the SSH terminal for a 0.2-second move. `--watching` means you are actively watching the live feed. A new camera observation and request ID are obtained on every invocation; no JSON or observation ID needs to be copied by hand. ```sh python ~/armfarm_move.py A forward --watching ``` If you rented Robot B instead: ```sh python ~/armfarm_move.py B forward --watching ``` Release dashboard manual controls before running a terminal movement. Only your selected cars can be controlled. Stop your rented hardware: ```sh car stop ``` This starter executes one bounded pulse, never a motion retry. It refuses stale camera evidence, paused control, unowned devices and invalid actions. An agent must inspect its own fresh images using the SDK/CLI below, rather than treating `--watching` as a substitute for vision. Read the printed receipt ID after a timeout. ## Agent workflow and tool reference Your reservation owns only the car(s) selected on the dashboard. Run `car tools` to see your reserved devices; commands and cameras for another customer's car are denied. Use your own agent on your computer and connect with the website's SSH command. The Pi and ESP credentials are private; the workspace provides a Python client and the `car` command. Start with `car tools`, then `car status A` and `car look A` for A, or replace A with B if you rented B. Look saves a JPEG under evidence/ and returns an observation_id. Download/view that image before driving. An offline car is not evidence that the other is offline. Battery sensors are unconfigured; do not infer remaining charge. For agents, use the SDK `call` method with the rented device, tool `pulse`, arguments `action` and `seconds`, and the inspected look result's `observation_id` as the `observation` argument. The human first-move command above handles IDs. Directions: forward, backward, left, right. Duration: 50–500 milliseconds. Specify A/B explicitly. One observation per movement, expires after 30 seconds. Direction mapping is user-edited: A's previous physical test found left/right opposite to the upright camera view, and B's physical directions are unverified. Do not assume polarity. Obtain operator confirmation and use bounded observations. `car hold B` stops B. `car stop` stops your reserved cars and pauses control; resume on the site. No automatic movement retries. Keep the printed request ID and use `car receipt REQUEST_ID` after any timeout. Unknown is not failure-to-execute. Stop for a person or obstacle in the path, or loss of current camera evidence. There is no overhead camera or autonomous soccer routine configured. Custom tools: `from rental.cars.client import Client`; use `Client().call('B','status')` or compose the same primitive calls in scripts. Do not bypass session ownership. Ordinary files and scripts are supported. Internet egress, sudo and SSH forwarding are disabled in this workspace. Save files using SCP/SFTP before End; End destroys the workspace, terminates its programs, revokes tool/video access, and frees your selected cars after confirmed cleanup. Manual driving: enable keyboard controls on the Cars dashboard and select your car. Focus the control panel; hold WASD or arrow keys, release to stop. Space or Escape stops. Keep the live camera visible. Movement is bounded to 200 ms pulses; loss of focus or camera freshness stops further pulses. Release manual controls before using agent motion. Stop cars on the dashboard resets a lost manual lease.