Journal · November 2, 2026
The waiting was the design problem.
On 2 November 2026 my phone showed thirteen chats and two agents. None of it was stored on the phone.
The agents run on this Windows machine. They stop when they need a permission, a file, or a decision. For a month I answered those stops by walking back to the desk, reading one line, and typing four words. The work waited for me. Nothing about the model was wrong. The distance was.
I did not know at the start whether the distance was the problem, or whether being interrupted was. A machine that asks for everything is as unusable as one that asks for nothing.
The shape
SIGNAL is a small server that runs beside the agent. A private tunnel carries it to my phone and a token closes the door. The page installs to the home screen, so it opens full screen without a store.
The interface borrows the grammar of a messaging app on purpose. An agent that asks a question should look like a person asking, not like a log file scrolling past.
What broke
The first real failure was quiet. One morning the phone showed no chats at all. The desktop app was open, the database was fine, and the agent API was not listening on any port. SIGNAL had nothing to read, so it drew an empty list.
The fix was three things: one fixed address for the agent runtime, a keeper that watches it and starts it again, and one short command I can send from outside for the case where the app itself will not open.
Speed was the second fix. The page was arriving uncompressed over the tunnel. Gzip took the main page from 137,359 bytes to 34,905, a 74 percent drop, and a chat now paints from cache before it refreshes.
The third was smaller. Approvals sent from the phone were failing with a 500 and nothing said so. An expired request now answers "already gone" and the card clears itself.
What it does now
An approval arrives as a card with the command, the file, or the question, and two buttons. I choose how loudly it reaches me: silent, a chime, an alarm that keeps sounding, or a call screen that rings. Three voices can read the request out loud, or tones only.
Voice notes are transcribed on this machine, offline. "Hey SIGNAL" listens for two words on the PC and takes one command. The clipboard goes both ways, laptop to phone and back. iOS asks for a paste confirmation, so the app says that instead of pretending.
Models are not fixed either. OpenAI, Anthropic, DeepSeek, OpenRouter and a model running on this machine sit in the same list, and the key is written to the runtime's own file here.
One evening I asked an agent to arm the alarm and watch the entrance. It answered with the state of the camera and the name of the clip it had saved. That exchange is in the screenshots on the project page.
What it does not do
Chats longer than 200 messages are cut off by the runtime's API. Recall hides a message here and cannot rewrite the transcript. And a web page cannot ring a sleeping phone, which is the whole reason for the native builds.
Next
Android, iOS and desktop builds are planned for January 2027. Before that, the adapter work, so SIGNAL can talk to more than one runtime.
What it tells me
I built this expecting to learn something about my agents. What I learned was about the interface. The model was already good enough to work from a phone. It needed a way to ask, in a place where I could answer.