Help
Changelog
What changed in each Silan release, newest first. The app’s What’s new shows the same notes after an update.
2026-11-04
Section titled “2026-11-04”- Silan can limit Free to one phone at a time and two Vault items, and keep one chat on many phones, schedules, report export and screen recording, and several agents on one phone for Pro (a trial counts as Pro). It is off until it is turned on, never stops work that is already running, and never limits the safety switch, approvals or Stop Everything. When something needs Pro, the app, MCP, the command line, REST and WebDriver all give the same reason with the upgrade link, and the app opens one Upgrade sheet. Setup gains a skippable Your plan step while plans are on.
- Silan’s relay can be private (sign_ups = private, the default in the server kit): only accounts already there, emails in allowed_emails or allowed_emails_file, and people a team there invited can make an account. Everyone else is told to set up their team’s own server. Linked Macs and billing keep working.
- Settings › Account & Team shows your plan with no sign-in (Free, Pro monthly or yearly, or the 7-day Pro trial), with Upgrade (19 USD a month or 190 USD a year, paid in your browser through Stripe), Restore my licence from a Silan receipt’s email and invoice number, Manage billing, and Contact us for Silan for a team. Silan takes your licence from the billing relay by itself once Stripe confirms the payment, keeps it on this Mac, checks it offline and refreshes it twice a day; team plans and seats are gone.
- The relay can sell Silan Pro (19 USD a month or 190 USD a year, 7-day trial) through Stripe Checkout in test mode, with Stripe Managed Payments, and keeps no buyer data: stripe_env and licence_key_file turn it on, and after Checkout the relay signs a licence from what Stripe says. POST /api/licence/checkout, /api/licence/refresh and /api/licence/restore give a licence; POST /api/billing/portal opens Stripe’s billing page for the licence’s customer; Tools/stripe-test-setup.sh makes the product (tax code txcd_10202003), the prices and the portal; /health says whether billing is on.
Changed
Section titled “Changed”- When the app a task needs is already open on an iPhone, Silan checks that at the start, while the agent makes its first move, so the task goes on sooner.
- An agent task ends one step sooner: the agent finishes as soon as the last step is done, and Silan still checks it on the phone before the task ends.
- On an iPhone without developer setup, the agent ends a task sooner when the last step is a choice it can only see, such as a tick: Silan sends a picture with each step, so the agent does not look again.
- Silan has no default team server. Each team runs its own: team setup and Settings › Account & Team ask for its address first, with a link to how to run one, and an invite link fills it in. The “Use Silan’s server” choice is gone. A Mac already sharing with a team on relay.getsilan.app keeps it, and billing still goes to Silan.
- The first task after Silan starts on an iPhone without developer setup begins sooner: Silan checks the pointer in about 2 s instead of about 30 s.
- A task on an iPhone without developer setup no longer waits about 30 s at the start to check the pointer again once an earlier task’s taps showed it.
- An agent task no longer stops as stuck when a sheet it closed has the same words as a button that stays on the page, such as “Save to list”.
- The relay no longer crashes when a sign-in proof carries a time far outside what a clock can hold: such a proof is refused as too old, like any other stale proof.
- Tools/release.sh makes its release commits and tags as faveh austinjuwon@gmail.com, whatever git identity the Mac or a throwaway clone has, and refuses to commit as anyone else.
Tools/release.sh --identityshows it.
2026-11-03
Section titled “2026-11-03”- Silan’s own know-how about apps is now in Flows as built-in lessons you can read, edit or delete: where iOS 27 keeps Light and Dark mode, and how to play a YouTube video full screen. The agent uses them as it uses a lesson you taught, and an edit or a delete stays.
Changed
Section titled “Changed”- The first task after Silan starts makes its plan while the iPhone gets ready to tap, not after, so it starts sooner.
- On iOS 27 the agent no longer plans a light or dark mode task through Display & Brightness, which no longer has the switch: the plan names only the end state (for example “Dark mode is on”), and the agent finds the way, with Silan’s built-in lesson on Settings > Appearance.
- On an iPhone on the Simple way, a swipe up or down now scrolls the screen with the mouse wheel. Before, the phone took the swipe as a tap and opened the row under it, or nothing moved.
- After you sign in to your team in the browser, Silan comes back to the front by itself. The browser no longer asks whether “127.0.0.1” may open Silan; its page only says you are signed in.
2026-11-03
Section titled “2026-11-03”- Android phones get one checklist, “Get your Android phone ready”, in setup’s Your phones when Android is picked, Add a device’s Android card, Settings › Devices & Drivers and the phone’s Set up control: install the Android tools with one Terminal line, turn on USB debugging, tap Allow on the phone, and Silan adds its helper app. Each step ticks by itself, and Silan finds and starts the Android tools with no phone plugged in. An Android phone reads Ready only once Silan can tap and type on it.
- No phone to hand? Silan makes its own iPhone or iPad simulator on this Mac, from the empty Rack, Add a device’s Simulators and emulators, Settings › Devices & Drivers, or New iPhone simulator and New iPad simulator in a chat’s device list, and adds it to the chat. One that stopped says so, and Make a simulator starts it again. In setup, What will Silan control? says whether Xcode is on this Mac once Simulators and emulators is ticked, and Try a first task makes the simulator for its task. A Mac without Xcode, or with no iOS simulator in Xcode, says so in plain words instead.
- A Mac that shares phones with a team keeps sharing after you quit Silan: the engine stays up while one of its phones is shared and the team link is on. Settings › General has “Keep this Mac awake while phones are shared” (off at first), so the Mac does not sleep by itself while teammates may use its phones.
Changed
Section titled “Changed”- Agent provider, in setup and in Settings, shows one row per provider with one word for its state and one button: Use, Sign in (Terminal opens with the login command typed, not run), How to install or How to fix; the tool’s own words wait under Details, and setup’s Continue turns on once the provider in use answers Silan’s check. Your AI tools is optional with Skip, its rows and the Connections page say Connect, then Test, and “Other app (MCP)” sits folded at the bottom. Try a first task keeps the device picture in a fixed frame, says why Start task is off above the buttons, and its “Finish setup” is now “Skip, open Silan”.
- Setup’s Mac permissions step comes before your phones, and Silan reads the camera and Bluetooth permission with no phone plugged in. Each row has Allow, which shows macOS’s box; after a no, Open System Settings with a short picture of the switch to turn on. Continue stays off until the camera and Bluetooth both read Allowed, and notifications are optional with Not now. Settings › General shows the same Mac permissions rows.
- Safety, in setup and in Settings, says “Choose when Silan stops and asks you.” The switch reads “Ask me before paying, sending, posting or deleting”, and with it off the row says “The agent will act without asking.” Both show the Stop Everything keys as key caps: Control Option Command Period.
- Setup asks “What will Silan control?” (iPhone or iPad, Android, simulators and emulators; more than one is fine) and shows only the steps those answers need: Mac permissions only for an iPhone or iPad, Your phones only for real phones, and Agent provider can be skipped because only Silan’s own chat needs it. Try a first task follows the answers: your phone, a new iPhone simulator Silan makes, or the words to paste in your own AI app. After setup, the empty Rack and Settings › Devices & Drivers offer “Make an iPhone simulator”, Add a device first asks what to add, and an Inbox ask from your AI app names it (“Claude Code wants to send a message.”).
- Setup now goes in this order: Welcome, Mac permissions, Your phones, Safety, Agent provider, Your AI tools, then Try a first task. Welcome says what setup holds and that it takes about 5 minutes. Your AI tools, the outside AI apps that may use Silan, is its own step after Agent provider.
- Settings › Account & Team names the team server (“Server: Silan’s server”), and a company’s own server is coming soon, so the Change… form is gone. Invites to your email wait there with Join, each team says who invited you, and Open in Silan on an invite’s web page fills the invite in. Signing in turns team sharing on with no restart.
- The team part (setup’s team cards, My team’s phones, “Use your team’s phones”) is on in every build. SILAN_FEATURE_TEAM=0 or the silan.feature.team default set to false turns it off.
- After the Mac restarts, chats keep their own day: a chat from before the restart no longer shows a later date such as Thu 19 Nov or sorts to the top of All chats, and its steps show the time they ran.
2026-11-02
Section titled “2026-11-02”-
For each action on a phone, the action’s result and Silan’s audit keep how long the action waited while another action used that phone, and how long it then had the phone.
-
A message for several phones can first get a plan from Silan’s lead: one job for each phone, the same on every phone or different, that you can edit or change before any phone starts. When every phone is done, the answer puts the phones that did the same job in one table and each other job on its own line.
-
In a plan for several phones, one phone’s job can now wait for a value another phone’s job finds, such as the iOS version the iPad reads for Seedlife to type. Each wait has a time limit, and a phone whose value does not come in time, or whose other phone’s job ended without it, stops and says which phone and value, so no phone waits for ever.
-
All chats now shows what a connected AI app did on your devices. Each time Claude Code, the Claude app, Codex, Cursor or another app you allowed acts on a device, Silan makes one item for it among your chats, named for the app, with what it did first, the device and the time. Open it to see each tap, typed text, swipe and opened app as steps, in the same words as a Silan chat, with the screen after a step while Silan keeps it (10 minutes). A step that did not work says why. It is a record: you cannot reply to it. Delete takes it out of All chats; the activity log keeps it. An app that only looks (lists devices, reads the screen) makes no item.
-
OpenCode and Pi can run Silan’s agent with the login they already have on this Mac, like Claude Code and Codex: Settings › Providers shows each one’s true sign-in, its models and, when it needs you, the one step that fixes it. Connections can add Silan to OpenCode (in
~/.config/opencode/opencode.json, beside your other servers). Cursor’s command line stays Later as a model, because it always runs its own tools; Pi has no MCP, so it cannot connect to Silan’s tools yet. -
A phone can let its screen go dark when nothing is using it, and Silan wakes it when it needs it again. Turn on “Let it sleep when idle” for a phone on the Devices page (it shows only for a cabled iPhone or iPad on the developer link). When no lease, agent task, run, take-over or open live view holds the phone, Silan locks the screen just before it rests its control of the phone; the next task wakes the phone and, for a phone with no passcode, unlocks it. The Devices page shows Asleep or Awake for each phone. A short Lab phone note gives battery advice for a spare phone that stays plugged in.
The words that promised “Silan never types your passcode” are gone. A passcode you save in Vault lets Silan unlock a passcode phone on the lock screen and answer iOS 27’s “Enter iPhone Passcode for “XCTest”” box over the Bluetooth keyboard, once the phone is paired with Silan’s keyboard. Silan never logs the passcode, never puts it in Activity, and never sends it to the model or any AI app.
-
Replay this chat, in a chat’s ⋯ menu, plays all the chat’s turns on one bar: each step shows the picture the agent saw before it acted, with a dot where it tapped, and you can play, pause, step back and forward, and pick 1x or 4x. Questions, waits and turns with no pictures are skipped with a short label. Settings › Privacy & Data › Replay pictures keeps the pictures 7, 30 (the default) or 90 days, or turns them off; deleting a chat deletes its pictures.
-
Silan’s agent and the Claude plugin skill have written rules for agents that share a phone: one driver per phone, short turns, look again before acting, one text box at a time, and never undo another agent’s work.
-
Set up control for an iPhone on the Simple driver no longer asks for Xcode or an Apple account. It shows three steps: see the screen over the cable, type and open apps once the iPhone is paired with this Mac over Bluetooth (you pair it right there), and tap, which says “Not yet” for now. Setup’s Connect devices step offers Set up control for such an iPhone until it is paired.
-
Several named agents can now work on one phone at the same time, each in its own app. Their taps take turns, so one agent never taps on a screen another agent changed after it last looked: Silan sends nothing and the agent looks again. The live picture shows a ring in each agent’s colour, with its name, where it last tapped. Take over takes the phone from all of them, and Hand back gives it back to all.
-
When iOS 27 asks for the iPhone’s passcode before Silan may control it (“Enter iPhone Passcode for “XCTest””), Silan now types the phone’s saved Vault passcode over the Bluetooth keyboard itself, once, only while its own picture of the phone shows that box; the AI agent never sees the passcode, and the live view and recordings hide the keyboard while Silan types. If the box stays after Silan typed, Silan stops typing that passcode anywhere (box or lock screen) and the Vault and the phone’s Info panel say the phone did not take it, until you save the passcode again.
Changed
Section titled “Changed”- The agent sends the model less for each step, so a task costs less and the model reads less: with the keyboard open its letter keys are left out, a text that only repeats the label of its row is left out, positions are given in percent (@50,31), old screens and old screenshots leave the conversation at the same time, and a task on one phone no longer asks the model to name the phone in every call.
- Connect for Claude Code, Codex and Cursor now asks if you test your own app with it. Test my app gives the app the tools for that: install your builds, record the screen, run flows and send test pushes. It can also read the device’s clipboard and notifications, and change its clipboard, location, text size and rotation. Just my devices keeps the tools to see the screen, tap, type and open apps. You no longer edit the app’s settings file by hand, and pressing Connect again keeps the tools you picked. The Claude app gets the same tools as before, with no question.
- Connections shows you how to connect an AI app in 3 steps: pick the app, start it again, then type the words Silan gives you, and the window tells you when it worked (or what to check when nothing came). Each AI app row says if the app is on this Mac and if Silan is in it, Disconnect also takes Silan out of the app, and an app’s last use stays after a restart. Keys, addresses and the setup for other MCP apps are now under For developers; the rows that did not work (the silan command, the Python SDK and remote access) are gone until they work, and AI apps now read “devices” instead of “phones”.
- Replay this chat shows the phone as tall as the window allows, and keeps sharper pictures (1280 pixels on the long side, about twice the disk per picture) for the chats you have from now on. The speed choice is now 0.5x, 1x, 2x or 4x.
- Settings › Devices & Drivers now says what the Simple driver does today. It needs no Xcode. A cable shows the screen. Pairing the phone with this Mac over Bluetooth lets Silan type and open apps. It cannot tap yet. Before, the card said it taps like your finger and pastes text, and neither was true. The Bluetooth helper check no longer says the helper is restarting when no phone is paired: it says the helper starts when this Mac pairs with a phone.
- On the Simple way, Silan now turns on AssistiveTouch over the USB cable on a paired iPhone that has it off, so the agent can tap and swipe there. When Silan stops, it turns AssistiveTouch off again, but only on a phone where Silan turned it on. If you turned AssistiveTouch on yourself, Silan leaves it on. If the iPhone does not let Silan turn it on, the agent works with keys only, as before.
- On the Simple way, an agent on an iPhone that cannot tap now works with keys only. It opens an app or a Settings page by its name, types into the field that has focus, and presses only the keys that work there: Return, Tab, Back, the Safari address field, and Home. It is told at the start that it cannot tap, so it ends a task that needs a tap at once and says so, instead of trying keys that do nothing.
- The agent opens the next app by its name instead of going to the Home Screen. Before, an agent that had to go from one app to another often pressed Home, and a task stopped there, because the Home Screen shows your own apps.
- While an agent waits for your yes, the phone is free. Before, an action that waited for your answer held the phone for up to 15 minutes, so your own taps from the Mac, after Take over, waited 30 seconds and then failed with “the device stayed busy with other actions until the deadline”. After your yes, Silan looks at the screen again before it acts. If the screen changed while you answered, for example another app is in front or the button is gone, Silan sends nothing and the agent looks again. Each action now says what reached the phone: nothing, maybe something, or all of it, and whether the screen after it showed the change.
- Silan no longer asks before a tap on a tab, or before a search in a search box that the app made as a plain text box. Before, a tab called “Book” asked as if it booked something, and a shop’s search box asked as if it sent a message. An ask now says what the thing is and which app it is in, for example “tap the “Book now” button in SkyTrip on Rosa’s iPhone”, where it said only “tap button “Book now” on Rosa’s iPhone”.
- A tap, a hold, a drag or a key press on a Simple-way iPhone or iPad that fails part way no longer leaves a finger, a button or a key down on the phone: Silan lets go of everything before it reports the error.
- On an iPad, the agent’s taps by element in an iPhone-only app (iPadOS shows it at iPhone size in the middle of the screen) land on the element, not in the black around the app.
- On an iPad, the agent sees a system box over an app, such as a location permission box, and can tap its buttons, so the box no longer blocks the task.
- A phone with a saved passcode that you lock while Silan is already connected to it now gets its passcode typed by Silan when a task needs it. Before, the agent asked you to unlock the phone, and Silan typed the passcode only on a later task after its connection to the phone had rested.
- A phone on the Simple way that you pair with this Mac while it is plugged in can now be controlled at once. Before, Silan looked for the pairing only when the phone was plugged in, so it stayed view only until you unplugged it or restarted Silan. When you forget the pairing, the phone goes back to view only at once too.
- Recordings no longer flash black while Silan waits to check the screen. A frame Silan could not check in time shows the last checked picture instead, and a recording starts with its first checked picture instead of black. The lock screen, the passcode, a typed secret and masked apps stay black, and a picture from before one of them is never shown after it.
- Replay this chat no longer shows a black or old picture for the agent’s first action after you answer it. When the agent asked you something (for example to unlock the phone), Silan now takes a new picture of the screen after your answer, so the next step’s picture is the screen you left.
- Replay this chat now has a picture for every step, also when the agent read the screen as text: Silan takes a still of that screen while the agent thinks, so the agent is not slowed. The page’s header counts every step of the chat, a turn with no pictures lists its steps instead of one “no pictures” line, and a chat from before this version says that pictures start from this version.
- A device you plug in for the first time now has Add in setup’s Connect devices step. Before, setup said “Not connected · Plug it in again.” with nothing to press, and you had to find Add a device to use it.
- On the Simple way, the pointer no longer runs off the top of an iPad and pulls down Notification Center. Silan now moves it in short steps that stop short of the screen’s edges, only believes a place the last step could have put it, and presses only when it saw the pointer at the target on the same screen it started on; else the tap fails with nothing pressed.
- On the Simple way, an agent no longer plans taps and swipes on an iPhone that cannot take them. When Silan gets the phone’s keyboard, it moves the pointer once and looks at the picture, and lists taps only when the phone shows the pointer. An iPhone with AssistiveTouch off shows no pointer, so an agent there types, presses keys and opens apps. Before, every tap failed and the agent spent its steps on them. An iPad shows the pointer with no setting and keeps its taps. A paired iPhone with no taps is not called “View only”, and Ask an agent can still pick it.
- On the Simple way, Silan can now find the pointer while something moves on the screen by itself, such as a video or a running stopwatch. Before it finds the pointer, it watches the screen for a second with nothing sent and leaves out the parts that change. It also looks for the pointer only where its last move could have taken it, so a clock digit that changes later is not taken for it. When too much of the screen moves, it says how much moved and asks you to stop it.
- On the Simple way, Silan no longer taps where it could not see the pointer arrive. Before, a video playing on an iPad could be taken for the pointer, and every later tap missed while saying it worked. Now such a measurement is refused, a bad one saved before is thrown away, and a tap that misses tells the agent instead of clicking.
- On the Simple way, a search screen left open over a dark app, such as Clock or Calculator, no longer sends the next app’s name into that app. Silan now sees the search screen there too, opens it again and types the name into it.
- On the Simple way, opening an app now fails when nothing opened, instead of saying it worked. Silan now waits for the search screen to show before it types the app name. When the name opens nothing, Silan closes the search again, tries once more, then says so. Before, the next try could close the search and type the name into the app below. Apple’s apps can now also be asked for by their app ID, such as com.apple.mobilenotes for Notes.
- A step check that reads a value no longer stops a task when the agent gave the value in its note instead of its answer. Silan checks the note on the screen as it checks an answer. The plan also asks for checks that one screen can show: a fact on two screens is two goals.
- When a step of a saved flow does not work and the agent does the rest of the task its own way, the steps the agent did not run now show “Not run” with why, in their place and with no time, instead of a tick at 0 s. Only the step the agent stood in for counts as healed, and the report says how many steps ran (“Passed, 1 step healed: 3 of 40 steps ran on 1 phone, 37 not run”); runs from before read the same way. A step that fails on a cabled iPhone no longer waits about a minute for its picture when the phone’s control had just dropped.
2026-11-02
Section titled “2026-11-02”- Silan checks a task step by step. It first splits the task into small goals, each with a check it can see on the phone’s screen, then checks each goal as the agent goes: with its own code first, and with a small AI check of the goal and the current screen only when code cannot tell. A goal whose check fails goes back to the agent, then to a new plan, then to you. The plan, each new plan and each goal’s check are in the chat’s steps (open “N steps”), never in the conversation itself.
- When a cabled phone’s live picture stops, the line under its picture says “The live picture stopped. Silan shows a new still every second until it comes back by itself.”
- Silan opened from your Downloads folder or from the disk image offers to move itself to Applications and opens again from there, so signing in from your browser, updates and opening at login work. A Silan already in Applications goes to the Trash, and quits first if it is open; Not Now keeps Silan where it is.
Changed
Section titled “Changed”- History is now All chats. The sidebar’s “Older chats are in History” is now “All chats” with the count, and the History place is gone from Work. All chats keeps the day groups, the filters and the search, and adds a device choice. A row opens the chat itself, the same as the sidebar; Save as a flow stays in the chat. Old History links open All chats. A chat whose device is gone now opens as the chat, says its device is not here, and offers Add a device, instead of showing “This device disconnected”.
- Add a phone and setup now say that Android needs adb on this Mac, which you install yourself (in Terminal:
brew install android-platform-tools). Android is tested on emulators only so far. - A flow’s page shows its name with Run, Schedule, Change steps and More in one group under it, then its steps, then its runs. Each step says its kind (Exact, Agent, Check, Wait or Note) and reads in plain words: an app by its name, a tap on a point as “a spot near the top right”, and a long text cut short. A warning about a step, such as a tap on a spot, now sits on that step, and the “things to look at in the file” box is gone.
- Change steps on a flow’s page now changes the steps right there, one at a time: pick the kind (Exact, Agent, Check or Wait), change the words in a box that grows, and Save step, Cancel or Remove step; Add a step goes between steps or at the end, and a step can move up or down. Silan saves each change into the flow’s file and keeps the file’s other lines and comments. The file itself is under the flow’s ⋯ › Show the file, and menus near the foot of the window now open upwards instead of being cut off.
- The message box has no line around it any more, also while you type in it. While the cursor is in it, the box is a little lighter in dark mode and its shadow is deeper in light mode.
- The message box shows the real company logo next to the model: Claude’s for Claude Code and the Claude API, OpenAI’s for Codex and the OpenAI API, in the chip and in its model list. Your own model server shows a server icon. Apple on-device keeps its letters.
silan helpmarkssilan runand its--junitreport as a preview that is not tested yet, so do not rely on it in CI.- A flow’s run now says how each step is done: a “Same taps” or “Agent” tag on each step, and a short reason when the agent stepped in because the same taps did not work. A flow kept from a chat ends with “Done when: …”. The run now checks it at the end: the agent looks at the screen once and the run shows Met, Not met, Could not tell or Not checked. Not met fails the run.
- Save as a flow now makes a flow from one job: you pick one of your messages in the chat with a radio card, and the flow’s name and a new “Done when” line come from it. The steps show at once; the taps that did not work fold in a moment later as “N taps that did not work are not in the flow. Show them”.
- A right-click on a chat in the sidebar no longer opens a Delete menu. Delete a chat from its ⋯ menu instead; it still says when the agent is working in the chat and stops it first.
- The agent no longer waits for minutes on a video or an advert that froze. While it waits on a screen that should move, Silan checks the picture every 2 seconds. If it has not changed for 10 seconds, the wait stops and the agent taps Play, then restarts the app, then asks you. One wait on a moving screen lasts at most 15 seconds, and the agent taps an advert’s Skip as soon as it shows. A screen that is meant to stand still, such as a form or a paused video, is never called frozen.
- The All chats page test no longer fails between midnight and 06:00: its old chat is dated noon yesterday instead of 30 hours ago.
- Opening an app by its name now finds it when the phone lists that name with a hidden direction mark. On an iPhone, WhatsApp is listed with such a mark in front, so “open WhatsApp” failed with “no app named” until the caller used the app’s ID.
- “For this chat” on an approval now covers the whole chat. Before, it covered one message only, so the agent asked again for the same Send at each new message. Now Silan does not ask again for the same kind of action in the same app on the same phone for the rest of the chat. A new chat, a routine or a flow run still asks. The three answers on the card now say what each one covers: “Just this once” (only this send), “For this chat” (sends in Messages, for the rest of this chat) and “Messages for 1 hour” (sends in Messages from any chat, for 1 hour). The Inbox says “Allowed for this chat” and has Stop allowing while the answer is in effect; deleting the chat also ends it.
- An AI app or the agent working a cabled iPhone loses less time between steps. The live picture stays open while the phone is in use, so the phone no longer re-joins its cable and restarts Silan’s control mid-task. If control is starting again, a step waits for it instead of failing with a Bluetooth keyboard message. In a slow app such as WhatsApp, Silan reads the screen from a picture instead of waiting for the app’s slow screen list.
- A cabled iPhone or iPad whose live picture stops no longer shows its last frame as if it were live. The picture’s place shows a new still every second instead, and the live picture comes back by itself: after failed tries, Silan now leaves macOS 17 s with no capture open, which is what macOS needs before it finds the phone again. Before, the picture could stay frozen for minutes while the agent worked.
- Taps, long presses, typing into a field, swiping from an element and waiting for something now work from the Claude app. The Claude app sends those targets as text, and Silan refused every one of them as invalid; Silan now reads the text as the target, for every tool, and its tool list says plainly that a target is an object.
- A connected AI app that only read (for example listed the devices) now shows when it was last used on the Connections page and in Manage, instead of “Not used yet”. Reads leave no row in Activity, so the engine now keeps the time of each app’s last tool call while it runs.
- A flow saved from a chat now runs about as smoothly as the chat. A flow that names its app by name (“open Focus Lock”) runs its own taps again: before, the run’s safety rules knew the app only by its name and refused every tap, so the agent did each step. When a saved tap does not work, one agent now finishes the rest of the flow, not one agent per step. It gets the goal, the steps done and the rest of the flow as a plan to follow, not as orders. It looks at the screen first, so it does not add time again that the app already shows. A run’s agent work is one chat. Run chats no longer show in the sidebar, old ones included: open them with “See the agent’s work” on the run. Done when now names the app on screen, and an app’s own side warning does not fail it.
- A flow saved from a chat now starts where the chat began, so it runs from any screen. A chat begun on the Home Screen starts with “Go to the Home Screen”. A chat begun in an app starts by opening that app. A chat begun anywhere else starts with an agent step that gets to the start. When a saved tap does not work, the agent now gets the flow’s goal, its app, the steps done so far and the tap that failed, so it does not ask which app. The agent’s chat for a flow’s run is called “Flow:
, run ”, and Silan’s words to the agent no longer show as your message. Done when no longer keeps a time or a count that changes each run. - An AI app that claimed a phone and then stopped using it no longer keeps it for up to 10 minutes. Its claim gives way after 60 s with no calls when someone else asks for the phone, and the busy answer says when the phone is free. Silan’s own agent, runs and the person keep their claims as before.
- When the agent asks you to unlock a locked phone, you no longer have to press an answer like “I unlocked it”. Unlock the phone by hand and press nothing: a few seconds later the question ends by itself and the message runs. This holds also when the agent asks you to log in on a phone that is locked (“Please log in on Seedlife: The phone is locked…”). A real sign-in asked on an unlocked phone still waits for your answer.
- A set-up iPhone or iPad that was locked when Silan opened its runner (often the first time after an update) no longer drops back to Set up control with a red X. Its page keeps the chat and the picture with “
is locked. Unlock it on the device to continue.” under it, and Silan opens the runner by itself once the phone is unlocked, with no Try again. - Silan now asks before more risky taps seen in real apps on an iPhone: “PayPal” on a donate page, a WhatsApp “Clear chat” row, Firefox’s history bin and the “All Time” and “Last Hour” choices under its “Deletes history” box. “Erase All Content and Settings” now asks under deleting, not paying.
- Silan now asks before more taps that pay or delete: a buy button that shows only a price (such as “£2.99” in the App Store), “Donate”, “Start Free Trial” and “Try It Free”, and “Discard”, “Erase”, “Move to Bin”, “Move to Trash”, “Empty Bin”, “Clear Chat” and “Clear History”.
- After you answer the agent’s question, such as pressing Continue once you typed the phone’s passcode, your answer no longer stays over the message box as “1 message queued”. The agent already had it as the answer. A message you type while the agent works still waits in the queue as before.
- Pressing Return in a search box no longer stops the agent with an approval card, and pressing Return in a password box is refused like typing there. Return in any other text box still asks before it sends.
- Silan now asks before a tap on a screen whose title is about paying, sending, posting or deleting (such as “Confirm payment”), as the safety rules always said. The approval card shows the amounts on the screen, and in a browser it names the site in the address bar.
- An agent task on a cabled iPhone no longer stops with “A screenshot capture is already in progress” when the phone’s page shows stills (the live picture stopped, or the phone sleeps) and the agent reads the screen from a picture at the same moment: Silan takes one screenshot of a phone at a time and a second ask shares the next one. When a screen read fails on a locked phone, the agent asks “Seedlife is locked, so Silan cannot read its screen. Please unlock it, then press Continue.” instead of stopping with “A step took too long”.
- An unplugged phone no longer shows its last picture as if it were live. In a chat’s device column, on its page, in full screen, in a chat’s device tiles, in a test run and in setup, its place now shows its name, “Not connected” and how to plug it back in, and its buttons that need the phone are off. The live picture comes back by itself when the phone does.
- The release notes test in Tools/tests no longer breaks when the project’s own version moves: it releases the next minor version after whatever the tree holds, so tester builds pass again after Release 0.9.0.
- When iOS asks for the iPhone’s passcode before Silan may control it (“Enter iPhone Passcode for “XCTest””), Silan no longer shows Set up control with Xcode’s error text. The phone page keeps the chat and the picture with “Unlock
and enter its passcode if it asks, so Silan can control it.” under it, the composer says the same, and Silan goes on by itself after the passcode. The agent no longer says “you need to do nothing” after the person typed the passcode. Set up control’s runner problems are now one plain sentence and the fix, with Xcode’s own words under a small Details toggle.
Security
Section titled “Security”- The text Silan reads from the screen no longer carries a card number or the text of a box named a password. Before, the picture sent to an AI model hid a card number while the list of what is on the screen, sent with it, still had it in full. With only the picture to read from, the list could also put a user name on the Password box. Now a card number and the text of any box named a password show as four dots, on every driver, and the picture hides the same boxes.
- Silan no longer leaves what it types from the Vault in Xcode’s test logs on the Mac. The iPhone and simulator runner types Vault values without logging them, and keeps its result files in a private folder that it deletes when the runner stops.
- For now the agent, flows and connected AI tools type only Password items from the Vault, into password boxes. A Key or Text item stays on the phone’s screen after it is typed, where the AI would read it, so the agent now says it cannot type it, and the Vault page says so.
2026-10-23
Section titled “2026-10-23”- Add a phone works: it shows how to connect a phone (plug it in, unlock it, trust this Mac), the phones Silan sees, and the phones you removed, each with Add back.
- A stuck agent now asks you what to do instead of ending the task: Try again, take over the phone, or Stop. You can skip a question or a sign-in, and the agent goes on without it. A question nobody answered in time has Ask again, which starts the task again with that question first.
- The Agent tab keeps your agent tasks as chats: each chat stays on one phone, you can have several going at once on different phones, and a message you send after a task ends continues that chat, so the agent and its check see what the earlier turns said and did (“now do it again”, “set it to 5”). A step’s row appears the moment the agent starts the action, naming what it taps, and a step the agent retries after a miss stays quiet instead of showing as a failure. A chat whose phone someone else is using waits in line and says who has it, such as “Waiting for iPad: the chat “Open Calculator” is using it”, and if the phone is still busy after up to 10 minutes, it stops and says so.
- The agent can turn the phone on its side or upright for a landscape or full-screen video task. The chat says “Turning the phone on its side”. When the app in front stays upright, the agent uses the app’s own full-screen button or gesture instead.
- A task that asks a question, such as which iOS version the phone runs, can ask the agent for a typed answer, and Silan checks that answer against what the phone shows when the task ends, before its second model judges the task. A wrong answer, or none, ends the task as not confirmed, and the agent’s steps show “Answer checked”, “Answer wrong”, “No answer” or “Answer not checked” with the reason. A flow’s agent step can ask for an answer the same way.
- Silan has its own icon now, the Beacon mark: a phone with a live dot on its corner. You see it in Finder, the Dock, the About window and the download. The menu bar shows the same mark in one colour, so it follows a light or dark menu bar. The Silan helper apps on Android phones show it too.
- Silan checks for new versions and installs them (Sparkle 2). Settings > Updates and the app menu can check now, check automatically, download automatically, and install a downloaded update now or on the next restart. Settings > About shows the app’s and the engine’s versions.
- A page opened from another page has a back button at the top left, named for where you came from (“‹ Test iPhone 11”, “‹ Flows”), and it goes back there: a chat opened from a device’s recent chats goes back to that device. ⌘[ goes back, ⌘] goes forward, and a two-finger swipe right on the trackpad goes back. The “Flows / the flow” crumbs are gone. A page picked in the sidebar has no back button.
- Help > Copy Details for a Bug Report puts plain text on the clipboard for the beta feedback chat: the app and engine versions, macOS, the Mac model, each phone’s model, system, driver and checks, and errors from the last 24 hours. It leaves out names, phone ids, keys, tokens, passwords, screenshots and quoted words, and shows what it copied.
- A run on a phone that another run, an agent task or you have now waits in line for it instead of failing: Run a flow says “In run N” and “Starts when run N finishes”, and the waiting run’s page and the Runs list say what it waits for. It starts when the phone is free, in order, stops waiting when you stop it, and gives up after 30 minutes. A client of the engine asks for the wait with startRun’s waitForPhonesMs (up to 4 hours) and reads the run’s place in line from its queue (IPC protocol 12).
- A chat’s answer now shows on its own card at the end of each turn: Done and the time, the answer, then Save as a flow, Copy and Why. “Silan checked it” opens what Silan checked. The steps fold into one line above the card, “Worked for 5 min 25 s · 20 steps”, with the retries in amber; while the agent works, the line stays open and counts the time. The sidebar has a Chats list after Work: the running chats and the last 5 finished ones, each with its phone, time and state. Click a chat to open it, “+” to start a new one, and See all to open History.
- A chat can use more than one device. The message box shows the chat’s devices as a stack (“2 devices”) with a list to add or take out a device, and the device column shows only the chat’s devices, with “Agent here” on the one the agent uses now. Chats + and ⌘K open one new chat view, where you pick the devices before you send.
- A chat’s ⋯ menu now has Rename…, Copy chat and Report a problem…, above Delete chat…. A new name stays after the agent’s next turn; an empty name goes back to the first message.
- An agent’s question with options shows them as buttons; one press answers it, and typing still works.
- Save a whole chat as a flow. Save as a flow is now at the top of the chat. Pick the messages to keep, change the goal, and change or remove any step. Silan folds away the tries that did not work (one model call when you open it), and you can keep any of them.
- Connect an app on the Connections page sets up Claude Code, Codex or the Claude app with no key: Silan names the app from its code signature and asks you the first time it uses your phones (Allow, Allow this time or Don’t allow; a program Silan cannot check gets Allow this time only). Disconnect ends the app’s grant and its work, and its next try asks again. A key made with New key still works with
silan mcp --keyorSILAN_API_KEY; clients of the engine use IPC protocol 26 (mcpOpen, mcpSend, mcpClose, consentRequests, answerConsent). - Connect an app now sets up Cursor in one click too (its global
~/.cursor/mcp.json, with no key). For any other MCP app it shows the setup to paste, with one Copy. - The app has a Connections page: make an API key (shown once), see each key’s prefix, phones, last use and expiry, and revoke it, which refuses its next call at once on REST, MCP and WebDriver, ends its open event and picture streams, and frees the phones it holds; it also shows the connected AI apps (change their phones and what they can do, or disconnect them) and the local MCP and Appium addresses. API keys and app grants now live in Silan’s store, so they survive an engine restart, and the local key keeps its first-made date. Clients of the engine read and change them with IPC protocol 13 (getConnections, createKey, revokeKey, updateConnectedApp, disconnectApp), and listAudit can keep one key’s or app’s rows (actorID).
- A daily cap on model spend in the engine (IPC protocol 17). The cap is off (no cap) until it is set, and the setting to change it in the app comes in a later version. When a task’s next model call would pass the cap, the task stops and reads “Paused for today”, and Activity says “Paused for today at the daily cap”. A new cap counts at once, for running tasks too. Today’s spend is kept, so the cap holds after Silan restarts. A model with no price (OpenAI, your own server) cannot run under a cap. Claude Code, Codex, Apple and local models cost nothing here. A client of the engine reads
dailyCapUSDandspentTodayUSDwith getAgentSettings, and only the person may change the cap. - Delete a chat: in the chat’s ⋯ menu, or with a right-click on a chat in Chats or in a device’s recent chats. Silan asks first, and says so when the agent is still working in it. The chat goes with every turn in it, from the list and from the Mac. A turn still working stops first, and messages waiting for it start nothing. The chat’s page then goes back where you came from.
- Settings › Devices & Drivers works (IPC protocol 21). It shows the two drivers, each phone with its driver, the Apple team that signs the Developer driver’s runner, and “Reconnect phones automatically”. On an iPhone or iPad the person chooses the Simple driver or the Developer driver; other phones show their one driver. A chosen driver that cannot serve the phone now (the Simple driver needs a USB cable) leaves the other driver in charge, and the pane says so. The choice is kept in the engine’s settings (
devices.drivers), so it outlasts a restart, and Remove phone forgets it. The driver cannot change while someone uses the phone. The team picker uses the same list and call as Set up control. Turn off “Reconnect phones automatically” and Silan connects to a phone only when something uses it; this is kept in the engine’s settings too (devices.autoReconnect). A client of the engine sendssetDeviceDriver,getDeviceSettingsandupdateDeviceSettings(the person only), and readschosenDriveranddriverChoiceson each device. - Don’t use with Silan: right-click a phone in the sidebar, or use ⋯ on its page, to tell Silan to leave it alone. The phone stays in the list, greyed, as “Not in use”. Silan shows no picture and lets no agent use it, so the phone keeps its own sound and keeps charging. Silan remembers this when you unplug the phone or quit. Use with Silan turns it back on.
- Silan 0.9.0 is the first notarized release: the DMG opens with no Gatekeeper warning, and Silan checks https://downloads.getsilan.app for updates signed with the release key.
- Make and edit a flow in the app: New flow (on Flows and in Run a flow) writes the steps or keeps a finished agent task, and Edit (on a flow’s page, in its menu and on its problems) opens the flow’s file. Silan checks the file as you type and marks each problem on its line; Save keeps a new flow under an id made from its name (the next number when that id is taken), refuses a file with problems and says why, and asks before it writes over a change made elsewhere. Leaving with changes that are not saved asks first. A saved flow can take one more step in words at the end of a phone’s steps. Export as a file in a flow’s menu saves the flow’s file, comments and all, where you pick.
- A flow can run on its own: give it a schedule (every day, weekdays, some days or once, at up to 8 times) on its page or in the flows list, with the phones it runs on and how long to wait when a phone is busy. Silan starts it at each time through the same run as Run, with the same asks and phone holds, and Stop everything holds it; a time that cannot start waits, then is skipped with the reason. The flows list, the flow’s page and the menu bar’s Scheduled list show when each flow runs next (IPC protocol 14).
- A phone’s page can show one device alone in the window: press Full screen at the end of the device’s side strip, the Full screen button beside each device when there are several, or View › Full Screen Device (⇧⌘F). A top bar of icons has Sidebar, Exit full screen, the device with ‹ “2 of 4” › to move between devices, Who’s in control and Chat. The sidebar and the chat open as panels over the device; a click on the device, Esc or the icon again closes them, and that click does not tap the phone. Esc closes the newest panel, then ends full screen. While the agent needs you, the Chat icon has an amber dot and the chat opens by itself, unless you are using the phone.
- Each phone’s tile on All phones and its own page now show how the Mac reaches it: Cable or Wi-Fi. Point at it to read what that means for the live picture and Silan’s taps, and when plugging in the cable makes the picture live.
- The buttons beside a phone’s picture work once you take over: Home, Lock, Volume up and down, Rotate, and Type with your keyboard, which sends what you type on the Mac to the phone until you press Esc. A drag on the picture swipes the phone. A button the phone cannot take is off and says why, and the volume buttons of a real iPhone or iPad always stay off. Rotate also works on an iPhone that Silan can only watch.
- A phone’s sound has a speaker button at the top of the strip beside its picture. It opens “
’s sound”: Play on this Mac (the cable picture, fastest; the phone’s speaker is silent; you can mute it here) or Play on the phone, no picture. An iPhone sends its sound to the Mac whenever the Mac shows its screen over the cable, so Play on the phone stops the cable picture: the page shows no picture, the agent can still work, and you see its steps. The choice is kept for that phone. Play on this Mac brings the picture back. - Phones come and go more clearly (IPC protocol 18). Remove phone in a phone’s Info tab now works: Silan forgets the phone until it is plugged in again, and never touches the phone itself. A phone seen only over Wi-Fi comes back only by cable. The list of removed phones outlasts an engine restart. Remove phone is off while someone uses the phone, and says why. A phone Silan is still connecting to reads “Connecting”, with “Connecting by cable…” or “Connecting over Wi-Fi…” on its tile. A phone that left stays on the wall with the time: “Unplugged at 07:40 · plug it in to reconnect”, or “Disconnected at 07:40” over Wi-Fi. A client of the engine sends
removeDevice(the person only,DEVICE_LEASEDwhile the phone is in use) and reads the new stateconnectingandunpluggedAt; REST and MCP listconnectingtoo. - When you plug in a phone, Silan asks first: “Use it with Silan?” with Use it, Not now and Never. Until you answer, Silan shows nothing and the phone keeps its sound. Use it and Never are kept for that phone; Not now asks again next time. Settings › Devices & Drivers has “When you plug in a phone”: Use it, Ask me (the default) or Don’t use it.
- An agent task that passed the check is kept, so the same task on the same phone runs again with no model call for its steps: Silan repeats them, waits as long as the task’s words ask, and checks the end screen; the checking model still checks the end, and a task that asks for a typed answer gives the earlier answer, which Silan checks against this run’s end screen. When a step, the end screen or the answer does not match, the agent goes on from there. A task can turn this off (
replayfalse, protocol 30), and the agent bench runs with it off unless asked. - Runs say more of what Silan knows (IPC protocol 15). Run a flow asks for the flow’s values: a default filled in, a secret typed hidden, and Run waits for each value the flow needs; the run’s report shows the values it started with, a secret as •••. A run’s report counts its model calls next to its cost. A passed run says how many steps the agent healed (“Passed, 1 step healed”), and those steps say so. A failed run says why in words about its phone (“Failed at step 2 of 2: the phone never showed “Read” within 30 seconds”). A run on an iPhone whose control ended and could not be renewed could not run, “Could not run: control expired”, not failed. “up to 30 seconds” at the end of a wait step’s words is its limit. A client of the engine passes values with startRun’s params.
- A failed run can run again from the step that failed: “Run again from step N” on its page and in its menu skips the steps before N and starts there, on a flow on one phone. The report and Activity say where the run started; a client of the engine starts a run at a later step with startRun’s fromStep (IPC protocol 11).
- A run’s page lists every step of the flow, numbered, with where each one is and how long it took, and says about how long is left once the flow has run before. A report names the steps a failed or stopped run never reached. When you pick a phone another run has, the run dialog says when it should be free (“free in about 1 min”), from that flow’s earlier runs; without them it says only which run has the phone.
- Silan deletes finished runs, with their reports, screenshots and recordings, 30 days after they end. Settings > Privacy & Data > Finished runs changes that to 7 days, 90 days, 1 year or Keep forever, and Keep this run in a run’s menu keeps one run whatever its age.
- Send feedback opens a Feedback dialog from the sidebar’s footer and from Silan › Send Feedback…, and from “Not right? Tell us” on a chat’s answer with that chat attached (its title and steps, no pictures of the phone). For now Silan saves the feedback as a file on this Mac, and the dialog says where.
- You can now set up control of an iPhone from its page or from Connect phones in setup: pick your Apple team from the teams Xcode has, and Silan builds and starts its runner on the iPhone while the page shows each step. Silan never picks a team for you. When Xcode has no team yet, it tells you what to add in Xcode first.
- Settings > General has an Open at login switch. It reads what macOS says each time, and changes it only when you flip it; the Silan Engine still starts at login either way, so schedules run. Settings > Privacy & Data shows where Silan keeps its data, with Show in Finder. Settings > About has Copy Details for a Bug Report, the same as the Help menu item. Uninstall also removes Silan’s own Open at login item.
- Settings > General lets you change how you use Silan and run setup again from its first step, and says whether macOS lets Silan show notifications, with Open System Settings. Settings > Privacy & Data says how many days Silan keeps Activity, holds the Keep finished tasks switch (moved from Built-in Agent), and names where your tasks’ words and phone screens go.
- Export on Activity saves the lines you see as a CSV file, and a run’s report can be shared through the macOS share menu or saved where you pick, one run or several at once. Screenshot on a phone’s page saves its screen as a PNG, and every Copy button now puts its text on the Mac’s clipboard.
- Silan tells you on the Mac when a phone needs you, a run fails, a new phone is plugged in or everything stopped, and a click opens that page; a flow’s schedule can tell you only when it fails, or every time. ⌃⌥⌘. stops everything from any app, the menu bar icon shows how many things need you, Settings… (⌘,) is in the app menu, and the engine-off alert has Start engine.
- Take over (⌘T) now works on a phone where the built-in agent is busy: the agent waits, the Agent tab shows when you took over, and a note you type there goes to the agent when you hand back. Setup’s Safety switches and Settings’ two new window switches (ask which phone, show run cost) now work, setup shows the MCP address to copy, and Ask an agent warns before a task when the agent has no model key.
- While you have a phone (Take over), a two-finger scroll on the trackpad or a mouse wheel over its picture scrolls the phone, up, down, left or right, with no click first. The content moves as far and as fast as your fingers. Click and drag still swipes as before.
- Help > Uninstall Silan… removes the engine’s login item, the engine and its helpers, Silan.app (to the Trash) and its caches after you confirm, and your data folder only when you tick the box.
Silan.app/Contents/MacOS/Silan --uninstall [--delete-data] [--dry-run]does the same in Terminal (README, Uninstalling Silan). - Silan checks for updates again when it comes to the front, once the last check is an hour old, so a new version shows without restarting Silan.
- Settings > Vault keeps passwords, keys and codes in this Mac’s keychain. The agent sees only each item’s name and note, asks for an item by name, and Silan types the value for it after you allow it; the step shows “value hidden”. Settings > Test Accounts is now Vault, and Settings > Safety links to it.
Changed
Section titled “Changed”- The agent is quicker next to a playing video. Before, it waited 3 seconds after every tap while a video played. Now Silan learns which part of the screen keeps moving by itself and leaves it out, so a tap that changes nothing ends after 2 seconds, and a tap that changes something next to the video ends soon after the change.
- When you name an app in an agent task, or say yes to the agent asking about it, it opens with no approval card for that task. The row says “You asked”.
- A chat reads more like a chat. A turn that did nothing on a phone is a plain reply, with no check and no total. A turn that did work ends on the agent’s answer and one quiet line under it, “Silan checked it” (or “Silan could not confirm it”), with the time, the steps and Copy. Click the line to see Why. After an answer the message box says “Not right? Tell the agent what to change…”.
- A chat shows each question the agent asked and your answer as chat, between the folded runs of work, and each run says how long it worked and how many steps it took. Action rows are quieter, with the tapped or typed words standing out and their time on hover; the answer card shows the turn’s total time and steps, and the message box is raised with a round Send.
- A chat stays in the history of every device it used. When you take a device out of a chat, the chat still shows on that device’s page, with a quiet Removed tag. Open it there, and the chat goes to the last turn that used that device.
- The sidebar’s chats show the phone (and “+1” when a chat has more), the time the agent worked on it, the title on one line and the agent’s logo. A chat that needs you has one amber dot; the state words, the other dots and See all are gone (History is in the sidebar). Hover over a chat or move to it with the keyboard to see its full title, phones, agent and model, when it started and how it ended.
- The chat’s title shows on up to two lines instead of being cut. The Chats button beside it is gone: the sidebar’s Chats list opens every chat. The open chat’s sidebar row is marked by its fill, with no white bar, and the message box’s phone, AI and effort chips show their whole names, going to a second line when space is short.
- Outline buttons, tags, status pills, the picked choice in a segmented control, the picked button in a phone’s zoom rail and a waiting ask’s card now show their edge at 3:1 or more in dark and light, so they no longer read as plain text. The You and Added green is a little darker in light mode, so it reads at 4.5:1 on a picked sidebar row.
- A phone’s page no longer has a line under the picture about who controls it. The first time you take a phone, a tip under Who’s in control says how to tap and swipe, that an iPhone or iPad shows “Automation Running”, and how to give it back; after Got it it never shows again. Hover on You says the Automation Running part too.
- Silan’s look now comes from one design system kept with the code: one token file for colours, type, space, icons and motion, its rules, a kit page that shows every part in dark and light, and a check that stops a raw colour, size or font. The app looks the same.
- Phones are now Devices: All devices, Add a device and a device’s page, with old links still working. All devices shows one card per device with its picture, its state dot and one line, and New chat, Full screen and ⋯ on hover. Clicking a device opens the chat that uses it now or waits for you; when it is free you get a new chat on it with its last 5 chats and See all in History, which shows only that device’s chats. An unplugged device says to plug it in, and a device that is setting up shows its setup steps. The device menu is the same everywhere (New chat, Full screen, Don’t use with Silan, Remove…), and New chat puts the cursor in the message box. Fixed: Android setup checks showed raw ids, Answer could open the wrong chat, a plugged-in device that is not in use said to plug it in, devices changed places when their state changed, and offline cards and the sidebar’s device menu could not be reached with the keyboard.
- Silan starts its engine at the very start of its launch, while the window opens, so “Connecting to Silan’s engine” shows only while the engine truly cannot answer yet.
- History is now the list of your chats, newest first, one row per chat with its phone, time, number of turns and state. Filter by All, Needs you, Done or Failed, or search the chat titles. Open a chat to see every step the agent took, the questions it asked you and your answers, with Open chat and Save as a flow. The old list of every action by day is gone from the app.
- Silan has one tooltip for every icon: it shows after a short rest of the pointer, at once when you Tab to the icon, and Esc, a click or a scroll hides it; a shortcut shows as its keys (“Settings ⌘,”). Each phone in the sidebar, and each device over the Devices tab’s pictures, has one dot instead of a word: grey free, purple agent, green you, amber needs you, a ring when it is unplugged; hover or VoiceOver gives the word. The Inbox shows an amber dot and a green dot, each with its count. The chat’s top bar has no status word, the answer card shows a green check instead of “Done”, a waiting ask’s icon says Needs you, and Stop everything turns red on hover and focus.
- Inbox is now a board with three columns: Needs you, Working and Finished. Each card is one agent: answer an approval or a question right on its card, or open its chat. A card leaves Needs you once it is answered, and a finished chat leaves once you open it or press Clear. The sidebar’s Inbox row shows an amber count of what needs you and a green count of what finished.
- Inbox is one list in three groups, Needs you, Working and Finished, so a device column fits. An ask says its amount and why it asks (“Pay £4.99 for Pocket Planner Pro?”, “Pocket Planner (Staging) is not on the agents’ allow list.”), and its buttons stay off after a tap until the engine has the answer, so a second tap sends nothing. A finished row says why it ended: “Failed at step 9: the app closed”, “Paused for today” for the daily cap (not “Stopped at its limit”), and your own No as Stopped: “You said no to “send the reminder email””. Failed flow runs and connected apps’ asks are rows too, so the Inbox counts what the menu bar counts. Finished shows five rows, then Show more, and has Clear all finished and, on hover, Mark as handled. The Inbox says “Reading the Inbox” until it has read, never “Nothing needs you” too soon, and a chat with no device opens in History.
- Silan opens its control session on an iPhone (and so iOS’s automation overlay) only while a task, a run, a take-over or an action uses the phone, and closes it about 10 s later. When you stop control on the iPhone by holding both volume buttons, the phone’s tile and page say so and offer Turn control back on.
- The message box in a chat and in a new chat is calmer and roomier. Its edge stays grey when you type in it (a darker grey shows where the cursor is), with no blue line. The text has more space from the box’s edges, also when it scrolls. The box grows with what you type up to 8 lines, then scrolls, and goes back to its small size after Send.
- The message box under a chat has a new tools row. The clip adds text files, PDFs and images to your message (up to 5); you can also drop them on the box or paste them. The phone chip picks the phone for a new chat and names the chat’s phone after that. One control picks the model from the providers that are connected now, and how hard it thinks (effort) when the provider takes an effort level: Claude Code and Codex do. In a chat that has turns, a new pick applies from your next message. Codex now offers the models from its own list. While a turn runs, Send becomes Stop.
- The Silan download now holds the new app, the Mac window with the new pages, in place of the old SwiftUI app.
- A new phone no longer asks “Use it with Silan?” when you plug it in. It stays new, out of the sidebar, until you add it with Add a device; a phone Silan knows reconnects by itself. The “When you plug in a phone” setting is gone.
- The next message in a chat no longer waits for the phone to get ready. After a task, Silan keeps its helper app open on the iPhone or iPad for 2 minutes (it was 10 seconds), and it opens the helper while you type your message. When the phone must still get ready, the chat says so in plain words: “Getting Seedlife ready: Silan’s helper app is opening on this phone, so Silan can tap, type and read the screen”.
- The sidebar shows each phone on one row with its state as a word in a pill (Free, Agent, Needs you, You, Unplugged) and how it is connected (cable or Wi-Fi); All phones and Add a phone are two small buttons beside the Phones heading. All phones has filters (All, Free, In use), a card under each phone with its name, state, what it is doing, its connection and driver, and Open and New chat. Add a phone opens as a sheet over the page you were on: pick With a cable or Over Wi-Fi, watch the phones Silan finds, and get help when your phone does not show.
- New names in the sidebar and Settings: Needs you is now Inbox, Activity is now History, Built-in Agent is now Providers, Passwords & Safety is now Safety, and the Apple team is now your Apple account. Settings › Devices & Drivers says what the Simple and Developer drivers do in plain words.
- Settings › Providers lists the AI apps that run Silan’s agent, one row each with its status. When one needs you, its row opens on what happened and the one step that fixes it, with Check again. Add provider offers Claude Code and Codex now and marks the others Later. The page has no default model and no daily cap row; you pick the model in each chat. In setup, Connect your AI uses what you connect last, checks it with one short call first, drops a key the provider turns down, has one Continue button and says “Claude Code”. It reads again when you come back to the window, and the AI apps stay Connected after Back.
- A message you send while the agent works waits in a queue over the message box (“1 message queued”) instead of the chat. Each queued message starts its own turn when the agent is done, in order; Send now gives it to the agent at its next step, and Remove takes it back. After Stop, queued messages stay there as not sent.
- Remove in Settings › Devices & Drivers asks first in a confirm box and you stay in Settings. On a phone’s Info tab, Remove from Silan has its own section at the bottom with the same confirm box.
- Runs live inside their flow. A flow’s page has a Runs tab, with its runs under Today, Yesterday and Earlier and Show 20 more, and a Steps tab; its top shows the flow’s devices, schedule and last 8 results. A run’s page has crumbs back to its flow. The Runs place is gone: old links to it open Flows, and a link to a run still opens the run. Flows lists each flow with its last run, and its foot has “Runs of deleted flows”. A flow saved from a chat says “Made from a chat” and opens that chat. In Settings > Privacy & Data, “Keep forever” is now “No time limit”.
- Settings › Safety says what it does in plain words: “Always ask before” paying, sending messages, posting and deleting, and “Other actions” with Ask me or Don’t ask. “Remembered answers” is now “Allowed for now”: it shows only while a yes for a task or an hour is still in effect, each with Remove.
- With two or more devices on the Mac, a phone’s page shows them all in its Devices tab: two side by side, three or more in a sideways strip that stops on each device, with “2 of 4” and two arrows. The open chat’s devices say “This chat” and get the smoothest picture; a device scrolled out of view gets none. A new chat can take several devices from the message box’s device chip, each action in the chat shows which device it was on, and a chat in the sidebar shows its first device and “+1”. Save as a flow and replay work with one phone only, and the chat says so. A long device name in the sidebar wraps instead of being cut.
- The window is three columns: the sidebar (Inbox first, then Phones and Work), the phone view, and the Agent panel; the top bar keeps only the phone’s name, its connection, the chat title and Take over. The sidebar’s footer holds Settings, Connections, Send feedback and Stop everything (⌃⌥⌘.) as icons that name themselves on hover, and an update icon on the right that shows up to date, checking, an update ready (with a dot), downloading and restart. The app menu starts with About Silan and Check for Updates…, Settings has no Updates page, and Check for updates automatically is in Settings > General.
- The sidebar shows Chats first and Devices folded at the bottom with the connected devices. The Inbox keeps the asks you answered for a day under “You answered today”, and a chat that ended without a clear result stays until you press Done.
- Test builds of the engine and its Bluetooth helper are signed with the owner’s own Apple Development certificate when this Mac’s untracked setting names it (
SILAN_TEST_SIGNING_IDENTITYor~/.config/silan/test-signing-identity, the certificate’s SHA-1), so macOS asks for Camera and Bluetooth once instead of after every rebuild. Without the setting they stay ad hoc. - Silan has a new look in dark and light: the Mac’s own font, softer edges on buttons, tags and fields, rounder corners, bolder icons, and one blue for the filled button, Send and the keyboard focus ring. Grey text is still easy to read on every ground, and the amber and green states keep their strong colour.
- A phone’s page has the chat on the left and the phone on the right, with the phone’s Elements, Log and Info as tabs above the phone. Drag the edge after the sidebar or between the chat and the phone, or focus it and use the arrow keys; a double-click puts it back, and Silan keeps the widths. With an upright phone the phone’s column keeps its width and the chat gets the rest; with an iPad, an Android tablet or a turned phone the chat keeps its width and the picture gets the rest.
- An update downloads first and restarts Silan only when you say so. Click the update icon to download it; a note in Silan then says it is ready, with What’s new, a list of the changes in every build since yours. The icon becomes a restart arrow with a check: click it to restart and install. When an agent or a run is at work, Silan asks first: restart when it is done, or now. An update Silan downloaded on its own waits the same way.
- The update words name the build too, for example “Silan 0.9.0 (612)”.
- A phone’s page shows who is in control: an Agent / You switch above the phone. Click You to use the phone yourself, and Agent to give it back (⌘T both ways). The picture has a green ring while you have it. Zoom moved from the top bar into the phone’s side strip, under a line, so the top bar keeps only the phone’s name, its connection and the chat.
Removed
Section titled “Removed”- The Ask an agent box is gone: ⌘K opens a new chat.
- Setup no longer asks “How you’ll use Silan”, so it has five steps, and Settings › General no longer shows that question. Settings › Privacy & Data no longer shows Keep finished tasks or the Activity row; Silan keeps chats and History as before.
- The old SwiftUI app is gone from the source. Silan is one Mac app: the window with the new pages.
- An agent task no longer stops on “the agent is stuck” when only a value on the screen changes, such as a number on a display or a switch turned on. A row named “Enable UI Automation” in an app, such as on Settings’ Developer page, no longer stops a task as a passcode box; iOS’s own UI Automation box still does.
- An agent task no longer stops on “the agent is stuck” when the screen’s picture changed but its list of controls did not, such as a video playing in YouTube or a picture-in-picture window swiped away; a screen that is really frozen still stops it. The checker of “done” now also reads the screen right after the agent’s last action, so a “Sent” notice that went away before the end no longer makes a sent email “cannot tell”. On an iPhone, typing into a field types nothing when the tap left the focus in another field, and the agent is told so, instead of putting the text in the wrong field.
- On a phone Silan can only watch (no control set up), the agent now opens apps when a task needs only that, and a flow’s agent step on such a phone opens the app after asking you. Before, the agent read the phone as watch only and ended the task without trying.
- An agent task whose approval nobody answered in 5 minutes now says “Nobody answered in time” and can be asked again, instead of “You said No, so it stopped”.
- Ask again now does the whole task again with your answer, and the check passes it. Before, the agent counted what the earlier try did as done and skipped those steps, and the check failed even a full redo because Silan’s question came first.
- The Simple driver’s Bluetooth keyboard and mouse now open on a paired iPhone or iPad. Silan opens the link to the phone instead of asking macOS for it again and again, keeps the link the phone opens itself (as it does right after pairing) instead of closing it at once, and no longer opens a second channel beside the one the phone opens. A private engine started with its own support folder keeps its own Bluetooth bindings.
- An iPhone or iPad on its cable now uses the cable for its live picture and for Silan’s taps, even when it first connected over Wi-Fi. Before, a phone that connected over Wi-Fi stayed on Wi-Fi after its cable went in, with a slow picture of stills and slower taps.
- Your answer to an agent question now shows once in the chat, not twice.
- A message you send while the agent works is never lost. A message sent while the agent finishes or checks its work starts the chat’s next turn as soon as that turn ends.
- A chat’s answer card now gives the time the agent worked, as the chat’s row in the sidebar does, and no longer counts the time it waited for your answer. A turn that ended when the Silan Engine stopped no longer says “Working” with a time that goes on counting: its work ends at the last thing it did.
- A ticked checkbox now unticks when you click its tick mark or press it with VoiceOver; before, it ticked itself again at once.
- The flow editor’s “Discard your changes?” box now shows while Silan’s engine is away. Before, with changes not saved and the engine away, every press in the sidebar did nothing, and the box showed only once the engine was back.
- Needs you keeps the approvals you answered after Silan’s engine restarts, with who answered, when and how far a yes reached. A run that falls off the end of the newest 500 runs now goes with its report and files, so old runs no longer fill the Mac’s disk.
- An iPhone or iPad that nobody controls now stays free: Silan does not open its control session (iOS’s “Automation Running”, with the dimming and stutter that came with it) when the phone connects, when you open its page, or while you only watch it. It opens with Take over, an agent task or a run, and closes about 10 s after. The packaged app now has the camera permission macOS needs for the live picture over the cable; before, macOS refused it without asking, the app fell back to a still every second, and each still opened the control session again. Quitting Silan lets go of a phone you took over, and the phone’s page says what Take over does.
- An iPad’s Set up control panel no longer says Silan puts its runner on the iPhone.
- When Silan shows an iPhone or iPad on its cable, you now hear its sound on the Mac. iOS sends the sound to the Mac while the Mac shows the screen (the phone says “captured”), so before, the sound stopped on the phone and played nowhere. A sound button on the phone’s page mutes it on the Mac. When you close the phone’s page or quit Silan, the phone plays its own sound again within a few seconds.
- A phone’s Info tab now names an iPad’s system iPadOS (for example “iPadOS 27.0.1”), not iOS.
- Turning an iPhone to landscape without Silan’s runner no longer says it failed when the phone did turn. Silan read the turned screen the wrong way round.
- The check at the end of a task no longer says it cannot confirm an answer the agent read off the phone and then moved on from, such as a reply it read in a Gmail thread before it went back to the inbox. The check now also gets the screens that show the words of the agent’s answer, up to 3. It still says “Not proven” for an answer no screen showed.
- The check at the end of a task no longer says it cannot confirm work the phone showed in an app the agent then left, such as a note saved in Notes before the agent went to Gmail. The check now also reads the messages you sent while the agent worked, and checks each thing you asked for. When one thing is not shown, it says which one, in a line of its own.
- An agent task whose question you skip, or answer, is no longer marked not done by its check: the check now sees the agent’s questions to you and whether you answered or skipped them (never your answer).
- The Remove confirm opened from a device’s ⋯ in the sidebar now shows whole over the main area, also in full screen’s floating sidebar. The sidebar no longer scrolls sideways.
- A removed phone now comes back when you unplug it and plug it in again, also when it is paired over Wi-Fi or the replug is quick. Before, Silan kept it removed until every way it saw the phone lost it, and a replug under 10 seconds never looked like an unplug.
- A phone removed from its page while its live picture was open no longer comes back on its own about 20 seconds later. Closing the picture makes the phone leave USB for a moment, and Silan took that for the person unplugging it and plugging it in again.
- A run report you download or share now shows its screenshots wherever you open it. Before, the pictures stayed behind on the Mac and showed as broken images.
- A run you keep is never deleted when there are many runs; before, the oldest runs past 500 went even when kept. Each flow now keeps its newest 200 runs besides the ones you keep, so a busy flow no longer pushes out another flow’s runs. A flow whose runs are older than every other flow’s no longer shows as “Never run”, and its page lists all its runs. Settings no longer says runs are recorded: Silan does not film runs yet.
- Typing into a search box and searching no longer stops the agent with an approval card. Silan still asks before an agent presses Return or Send in any other text box, such as a message box.
- Settings keeps its list of panes while Silan’s engine is away, so General, Updates and About can still be opened. Before, ⌘, opened Built-in Agent, and the whole page gave way to “Silan’s engine isn’t running”.
- Setup’s first task now runs only on a phone Silan can control. With several, you pick the phone; with none, setup says why and takes you to Connect phones, where a phone whose control was stopped now has Turn control back on. Start task starts one task, even on a fast second click.
- Setup holds up: it starts again at the step you were on after you quit, says when Silan’s engine is not running and offers Start engine, and goes to the main window without a stretched or flashing frame, also from full screen. Connect phones now comes first and Mac permissions second, with a Notifications row that asks macOS when you press Allow notifications. A phone check that fails says why in plain words, Safety’s switches take one change at a time, and ⌘K, Check for Updates… and menu pages wait until setup is done.
- Open run in a phone’s Info tab, Copy run id in a run’s menu and Add key in the agent’s alerts now work; an empty Runs page and the Flows pages no longer promise
silan runor the API. - On an iPhone or iPad on its cable, the agent’s steps are quicker and smoother. Silan now takes the pictures it uses to see that the screen has settled from the live picture, not from slow screenshots on the phone. Before, each step waited about 2 seconds for these pictures, and the next tap waited behind them.
- Take over is quicker. Your clicks no longer wait for the phone’s screen to stop moving after each touch (up to 2 seconds on the cable), Take over no longer reads the screen before it gives you the phone, and your first click no longer waits for the agent’s own wait after its last step (4 seconds in a test).
- With an iPhone and an iPad both on cables, a phone’s tile no longer shows the other phone’s screen: Silan shows a picture only when its size is the phone’s own screen, and otherwise shows stills of the right phone and says why in the Live picture check.
- Unplugging one iPhone or iPad no longer stops the cable picture of another one that stays plugged in. Silan now only compares a phone’s screen with the other phones on a cable, not with phones it reaches over Wi-Fi.
Security
Section titled “Security”- Agents, test runs, MCP clients and API keys can no longer type into a password box on a phone: Silan refuses and says to hand the login to the person. The rule was there, but the box’s kind never reached it, so such typing went ahead.
- Silan’s web UI now builds only on a Node.js release with the 21 October 2026 security fixes (24.22.1, or 26.12.1 and later);
npm cirefuses an older or unpatched Node. The app itself carries no Node.js, so copies already installed are not affected.
2026-10-14
Section titled “2026-10-14”- Silan shows and controls iOS simulators, iPhones, iPads, Android phones and Android emulators from your Mac, several at once. An iPhone or iPad works over a USB cable with nothing installed on it, tapping and typing through the Mac as a Bluetooth keyboard and mouse, or in Developer Mode with Silan’s runner signed by your own Apple team.
- Every phone’s screen shows live: all phones side by side on one wall, or one phone on its own page with its element tree, apps and log. An iPhone or iPad on a cable shows its screen live over USB, drawn with the phone’s own rounded corners.
- A built-in AI agent does a task on your phones from one plain sentence and shows each step as it goes. It uses your Claude Code or Codex login, or a model provider’s key kept in your keychain, and a separate check confirms the task really worked before it counts as done.
- Flows are tests made of steps for one phone or several at once; a step can be a plain sentence that the agent carries out. A run shows each phone live beside its steps and ends in a report that says where and why it failed, and a finished agent task can be kept as a flow to run again.
- Risky actions by the agent or a connected tool, such as sending, paying, posting or opening an app it may not use, wait for your approval in Needs you, and password fields, card numbers and apps you chose to hide are blacked out of every screenshot. Take over any phone at any time and hand it back, or stop everything at once: every task and run holds where it is until you resume; passcode and Face ID boxes are always left to you. An answer you choose to remember carries to the next task for an hour, and Settings has Never ask me, a switch for each kind of risky action, and the list of remembered answers.
- The Activity screen keeps a lasting record of what you, the agent and connected tools did on each phone, with filters by who, phone, result and day, and search.
- Dari is now called Silan. The new Mac app holds guided setup, the phones, Runs, Flows, Needs you, Activity and the built-in agent’s settings in one window, with a menu bar item.
- Developers and AI tools can drive the phones through Silan’s REST API, MCP server and WebDriver endpoint (on this Mac only, behind a key only your user can read), the
silancommand line tool and the Python SDK. Plugins connect Claude Code, Codex and the Claude app to Silan, with Silan’s skills for using phones well.