Getting started
Install Action.app, grant permissions, and check the local agent
This page installs the released Action.app and checks that its agent runs.
To build Action from source, see Build from source.
Prerequisites
- macOS on Apple Silicon.
- Bun.
- The Lattices CLI. Install it with
bun add --global @lattices/lattices.
Install and launch
Install the app:
lats action installThe command downloads
Action.dmgfrom the latestaction-v*GitHub release and installs/Applications/Action.app. It does not need a source checkout. Add--launchto open the app after installation.Launch the app:
lats action launchGrant Accessibility and Screen Recording to
Action.appwhen macOS asks. Native control needs Accessibility. Screenshots and recording need Screen Recording.Check the status:
lats action status --jsonExpect
installed: true,running: true, andagentReachable: true. TheagentUrlisws://127.0.0.1:4319.
If agentReachable is false, launch the app again with lats action launch.
Action.app starts its agent helper when it launches.
Query the agent
lats action call ping
lats action call status
lats action call permissions.snapshotstatus lists the supported methods, the protocol version, and the path of
the capability-token file. Parameters are a JSON object; the CLI sends each
value as a string:
lats action call capture.screenshotScreen '{"output":"/tmp/action-screen.png"}'See API for every method.
Connect an agent
The app alone does not include the MCP server. To connect Claude Code, Codex, or another MCP harness, install the matching runtime bundle and configure it as described in Agent setup. After that, verify the install:
lats action capabilitiesExpect runtimeParity.state to be matched-source-digest. A version number
alone does not prove that the app and runtime match.
Quit
lats action quitThis quits the Action launcher. Prepared agent-layer displays stay connected until you release them explicitly.
Build from source
Use this path only on a development host. Requirements are macOS 14 or newer, Bun, and a Swift 6.2 toolchain. Without a developer signing identity, the build uses ad hoc signing, and permission checks are not stable across rebuilds.
From products/action in a Lattices checkout:
Install dependencies:
bun installBuild the signed app:
bun run native:app:buildThe build writes
native/dist/Action.app, including the agent helper.Launch the app:
bun run native:launchThe launch command rebuilds only if the app is missing or older than its sources. After a native change, use
bun run native:relaunch.Check the bundle and permissions:
bun run native:verify bun run native:permissions:statusWith permissions granted, run the capture smoke checks:
bun run native:test:screenshot bun run native:test:recordThe recording check waits for completion and reports the video, the
.finishedmarker, and the debug log.
bun run native:doctor builds, signs, verifies, and reports permissions in one
step. It changes the native build. Do not run it as a read-only check on an
installation target. From the Lattices repository root, bun run action:launch
and bun run action:dev call the same launch and relaunch scripts.
Recording is asynchronous
A recording start reply means that startup was accepted. It does not mean that
the recording finished. Completion is the movie file plus a .finished marker.
See Recording.