Ask what’s possible.
Discover the operations an application exposes. Start with its native API, not a guess at the right pixel.
Development preview · Linux first
Your applications already have a language.
Let agents speak it — through typed operations,
explicit permissions, and native APIs.
Open source. Local first. You bring the agent.
A computer is more than a picture of a screen. Work with the objects, operations and boundaries already inside it.
Discover the operations an application exposes. Start with its native API, not a guess at the right pixel.
Use typed inputs and current references. Ambiguous or stale targets should stop an action, not become a lucky guess.
A requested action still has to pass policy. Changing the frontend must not change what an agent is allowed to do.
Conceptual illustrations. Not product screenshots or a live execution.
The command path
A command has a contract. A target has an identity. An action needs authority. Follow the path before it reaches an application.
Inspect the environment, then look for a control by application, role and name.
computerctl doctor
computerctl --json capabilities list
computerctl --json ui find \
--app org.gnome.TextEditor \
--role button --name SaveDiscovery is not a permission grant.
A command describes its inputs and authority requirements before an agent asks to use it.
# Inspect the contract before invoking it
computerctl commands describe ui.invokeOne registry. The same contract for every frontend.
Use the reference discovery returned, with an action the target actually advertises.
# Replace this placeholder with a current ref
computerctl ui invoke \
'ui:<reference from this session>' \
--action clickA failed mutation never silently switches to a more privileged route.
Select a step to explore the request. These examples never connect to your computer.
Deep application APIs where they exist. Desktop semantics where they help. One place to understand the limits.
Work with tabs and the DOM, not an estimate of where a button might be.
Read and write documents through a deliberately narrow UNO interface.
Reach into the scene through an application-native driver.
A bounded PCB interface for an engineering tool with its own object model.
Address timelines, tracks and clips as structured objects.
Find semantic controls and use native window interfaces where available.
An agent can ask. That does not mean it should be able to act. Semwright makes the distinction part of the execution path.
Observation is the default. Clipboard contents, capture, input and mutations require their own permissions.
Switching between CLI, MCP, recipes or providers does not create a more privileged route.
Sensitive actions can require an external operator. The requesting agent cannot approve itself.
Build from source in a disposable Linux environment. Run the fake-backend smoke test before connecting real applications.
# Inspect before you act
computerctl commands describe ui.invoke
# Use a current reference from discovery
computerctl ui invoke \
'ui:<reference from this session>' \
--action clickReplace the illustrative reference with one returned by your own session. The request still needs policy authority.
The docs go deeper. The boundaries stay visible.
No. Semwright is the interface an agent calls, not the model that decides what to do. It exposes capabilities and mediates execution. You bring the agent.
A shell is useful, but usually inherits the user’s full authority. Semwright is built around narrower operations, scoped references, explicit permissions and a common audit path. An unrestricted shell granted separately can bypass those limits.
MCP is one frontend. The CLI, inspector and recipes use the same broker. Application drivers and federated MCP providers extend the capability catalogue without becoming separate authorization paths.
The development source is available for Linux. Start with a disposable account and the fake-backend smoke test. Application and desktop coverage is experimental and version-specific; the compatibility guide separates code, test evidence and live availability.
Cross-platform support is part of the product direction. Linux is the first host. This site does not present Windows or macOS as currently supported.
Explore the architecture. Try the source. Help build what comes next.