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.

MCP

Your AI agent uses Silan’s device tools.

Docs

REST

A local REST API on your Mac, with keys you make in the app.

Docs

WebDriver

An Appium-style WebDriver endpoint for tap, type, swipe and screenshot.

Docs

The silan command

A command-line tool. Run flows from a terminal or a script.

Docs

First steps

From download to a first job on a real device.

  1. 01

    Download Silan and plug in a device.

    A phone or tablet on a cable, or a simulator.

  2. 02

    Connect your AI agent.

    In Silan, open Connections › Connect an app, and pick your agent.

  3. 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.

MCP config · stdio
{
  "mcpServers": {
    "silan": {
      "type": "stdio",
      "command": "/Applications/Silan.app/Contents/Helpers/silan",
      "args": ["mcp"],
      "env": {}
    }
  }
}
REST · list devices, then tap
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.

WebDriver · status, then a session
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.

The silan command
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.

Terminal
SILAN=/Applications/Silan.app/Contents/Helpers/silan
$SILAN run login.silan.yaml --bind phone=<device id> --junit junit.xml

Start with the quickstart.