Guides
Mac app
Run Skynet on your Mac with your own coding agent and Docker.
The Skynet Mac app runs Skynet on your own computer. It sends model calls through a coding CLI that is signed in on your Mac, so your CLI plan pays for those calls. You can also link the app to your hosted Skynet account.
Requirements
- A Mac with Apple silicon. Intel builds exist, but nobody tested them on Intel hardware.
- Docker Desktop, running, with Use Rosetta for x86_64/amd64 emulation turned on.
- One coding CLI, signed in:
- Claude Code (
claude) 2.1.226 or newer, or - Codex (
codex) 0.160.0 or newer.
- Claude Code (
Set up Codex
Codex must keep its credentials in a file. Do these steps before the first launch:
- Open
~/.codex/config.tomland add this line:
cli_auth_credentials_store = "file"- Sign in with your ChatGPT account:
codex loginInstall the app
The builds are signed ad hoc and are not notarized. macOS blocks them until you remove the quarantine flag.
- Open the
.dmgfile. - Drag Skynet to Applications.
- Run this command in Terminal:
xattr -dr com.apple.quarantine /Applications/Skynet.app- Open Skynet from Applications.
What happens at launch
The app does these steps in order:
- It reads the
PATHfrom your login shell, so it can find Docker and your CLI. - It checks Docker and your coding CLI.
- It starts a local Postgres database in Docker.
- It builds the sandbox image
skynet-local-sandboxforlinux/amd64. Docker runs it under Rosetta. - It updates the database schema.
- It starts the local API and the web app, and shows the web app in the window.
Onboarding checks
The app shows a list of checks: Docker, Coding CLI, Signed in, Usage limit, Local services and Account. If a check fails, the app shows a screen that tells you what to do:
| Screen | What to do |
|---|---|
| Install Docker Desktop | Install Docker Desktop. |
| Start Docker | Start Docker Desktop. |
| Install a coding CLI | Install Claude Code or Codex. |
| Update your coding CLI | Update the CLI to the minimum version above. |
| Sign in to your CLI | Sign in to the CLI in Terminal. |
| Usage limit reached | Wait for the reset time. New jobs can start again after the reset. |
Click Check again after you fix the problem. Click Open logs to see the log files. On the Usage limit reached screen, you can click Open Skynet anyway.
Local runs
In the app, model calls go through the CLI on your Mac. The model menu shows this mode as Local. The hint says: "Your plan pays for the calls, so this model adds $0 to the run."
The CLI names in the app are Claude Code and Codex.
Run the proposer on your CLI
The setting Run the proposer on my CLI controls where the proposer agent runs. The choices are Agent engine (default) and Off (sandboxed proposer).
Proposer access sets what the CLI can touch:
- Workspace only is the default. It relies on each CLI's own sandbox.
- Full access runs the CLI with your user privileges.
Tagging in the app
AI tagging in the Mac app needs your own provider key. Choose a model under Your own key. See Label data with the tagger.
Link to your Skynet account
You can use the app without an account. Click Use without signing in for that. To sync with your hosted account, link the app.
Link this Mac
- At the Sign in to Skynet step, the app opens the page Link a Mac in your default browser.
- Sign in to Skynet in the browser if it asks.
- Check the list under When linked, this Mac can:.
- Click Link this Mac. The page shows "Returning to the Mac app…".
If the sign-in fails or you cancel, the app shows Try again and Use without signing in.
When linked, the Mac can:
- See your name and email.
- See your balance.
- Sync your runs with your account.
- Use hosted models, paid from your balance.
- Use your connected data sources.
- Search and browse the web through Skynet.
The link uses a secure sign-in flow (OAuth with PKCE). The app stores its tokens encrypted on your Mac. When you unlink, Skynet revokes the tokens.
Link limits
| Limit | Value |
|---|---|
| Linked Macs for each account | 10 |
| Access token lifetime | 1 hour, then the app refreshes it |
| Link idle timeout | 30 days without use |
| Link maximum age | 365 days |
After the idle timeout or the maximum age, link the Mac again.
Link status
The app shows one of these states: Local mode, Linked to this Mac, Sign in to sync or Linked (offline).
Local services and data
All local services listen on 127.0.0.1 only:
| Service | Port range |
|---|---|
| API | 48100 to 48119 |
| Web app | 48120 to 48139 |
| Postgres | 48140 to 48159 |
The app keeps its data in ~/Library/Application Support/Skynet. The logs/ folder holds desktop.log, api.log, frontend.log, migrate.log and sandbox-build.log.
When you quit the app, it stops the web app, the API, Postgres and all job containers.
Reset the app
Quit the app first. Then run:
docker volume rm skynet-local-pgdata
rm -rf ~/Library/Application\ Support/SkynetNext steps
- Submit a run.
- Read about billing for hosted models.
- Read Security.