Builders
Build on Silan
Four ways to connect: MCP for AI agents, a REST API, WebDriver and the silan command-line tool. All on your own Mac.
Four ways to connect
Pick the one that fits your tools. Each one has its own page in the docs.
First steps
From download to a first job on a real device.
- 01
Download Silan and plug in a device.
A phone or tablet on a cable, or a simulator.
- 02
Connect your AI agent.
In Silan, open Connections › Connect an app, and pick your agent.
- 03
Ask it to do a job on the device.
For example: “Use Silan to list my devices.”
Code examples
Each one is copied from the docs.
{
"mcpServers": {
"silan": {
"type": "stdio",
"command": "/Applications/Silan.app/Contents/Helpers/silan",
"args": ["mcp"],
"env": {}
}
}
}
KEY=silan_sk_...
curl -s -H "Authorization: Bearer $KEY" http://127.0.0.1:47800/v1/devices
curl -s -H "Authorization: Bearer $KEY" -H 'Content-Type: application/json' \
-d '{"action":{"type":"tap","target":{"text":"Checkout"}}}' \
http://127.0.0.1:47800/v1/devices/<device id>/actions
Make a key in Silan: Connections › For developers › New key.
KEY=silan_sk_...
B=http://127.0.0.1:47800/wd/hub
curl -s "$B/status"
curl -s -H "Authorization: Bearer $KEY" -H 'Content-Type: application/json' \
-d '{"capabilities":{"alwaysMatch":{"platformName":"iOS","appium:udid":"<udid>","appium:automationName":"Silan"}}}' \
"$B/session"
/status needs no key. The port is 47800, unless another app already uses it.
SILAN=/Applications/Silan.app/Contents/Helpers/silan
$SILAN devices
$SILAN observe <device id> --elements interactive
$SILAN tap <device id> --text "General"
$SILAN wait <device id> --text "About" --timeout 5000
$SILAN run login.silan.yaml --bind phone=<device id> --junit junit.xml
$SILAN stop
Exit codes: 0 success, 1 failed, 2 wrong command, 3 Silan is not running, 4 key refused.
Run a flow from a script.
silan run exits with 0 only when the flow passes. With --junit, it also writes a JUnit file. The Silan app must be open.
SILAN=/Applications/Silan.app/Contents/Helpers/silan
$SILAN run login.silan.yaml --bind phone=<device id> --junit junit.xml