First run · about 30 minutes
Build your first party.
Go from a fresh install to a few agents that research, run on a schedule, pass work between themselves, and wait for your OK on anything risky. Every step works with a free local model.
ollama pull qwen3:8b first.Install Asylum
Download Asylum.dmg from the releases page, open it, and drag Asylum to Applications. Release builds are signed and notarized, so they open like any other app.
Prefer to build it? You need Rust 1.96 or later:
git clone https://github.com/wess/asylum && cd asylum
cargo run -p app # a dev build, named asylumdev
scripts/bundle.sh && scripts/dmg.sh # or dist/Asylum.app and dist/Asylum.dmg
Walk through onboarding
The first launch opens a short welcome and tour, then a provider list: Ollama (local), Ollama Cloud, Codex, Claude Code, Anthropic (Claude), xAI, OpenAI, LiteLLM, or a custom OpenAI-compatible endpoint. No xAI account is required for chat. Asylum detects local models and installed CLIs; if one is missing, install it and connect again. For an API provider, paste your key and give its address if requested. Asylum checks the key and keeps it in your Mac's Keychain.
Next it asks which tools you use — Gmail, GitHub, Linear and so on. That only shapes the suggestions on the next screen, Meet a future teammate, where thirteen starter Agents are ranked for you. Choose Researcher for this tutorial, create your own, or start with a preset team. Team presets create their agents and a shared group chat.
While you do this, the Agents' computer starts in the background: a workspace folder, a sandboxed shell, and a headless browser profile.
Connect the model you want
Open Settings → Providers (⌘,) and press Add provider. Pick a preset, and leave the key option on Paste a key: paste it, and Asylum checks it before saving it to the Keychain. Every provider's card also has a key field, so you can replace a key any time. Presets:
| Preset | Endpoint | Key |
|---|---|---|
| Ollama (local) | http://127.0.0.1:11434/v1 | none |
| LiteLLM proxy | http://127.0.0.1:4000/v1 | LITELLM_API_KEY |
| OpenAI | https://api.openai.com/v1 | OPENAI_API_KEY |
| Anthropic | https://api.anthropic.com/v1 | ANTHROPIC_API_KEY |
Press Refresh models and Asylum asks the endpoint for its /models — no typing model names from memory. Set it as the default provider.
Give your Agent a job
Open the Researcher from the sidebar and send it something real:
Compare the three most popular Rust web frameworks on performance,
ergonomics, and ecosystem. Cite your sources.
Watch the reply stream in. Each tool the Agent uses — web_search, fetch_url, browser_open — shows up inline; click one to see what went in and what came back. Link cards preview the page when you hover.
The Agent's description holds lasting rules. Open Agent settings (⌘⇧,) and add one: "Always end with a one-line recommendation." Put task-specific instructions in messages instead.
While you're there, click its avatar to pick a class — Warrior, Knight, Wizard, Healer, Thief, Monk, Ranger, or Sage — and choose its clothes, trim, hair, and skin colors.
Watch its computer, then take over
Press ⌘⇧O to open the Agent screen in the workspace panel. The panel defaults to the bottom; its dock controls move it left or right, and you can drag the divider to resize. Use ⌘⇧B for your own Browser or ⌘⇧T for a persistent local Terminal. Your page and shell survive switching chats and hiding the panel. Screen shows the Agent's browser page live; Files is the shared workspace; Terminal is a real shell in it.
Ask the Agent to open a site that needs a login. When it hits the sign-in page it sends a takeover card: click Take over, sign in yourself in the panel, and click I'm done. The session stays signed in for every Agent from then on. For passkeys or a hardware key, choose Open in a window so macOS can show its own prompt.
Approve something
Ask for something with consequences:
Draft an email to me summarizing the comparison and send it.
Sending is consequential, so the Agent stops with an Approval card: Allow once, Always allow, or Deny. With Auto-review on (the default), a fast model checks each action against your rules first and only asks when it should.
Add rules in plain language under Settings → General → Auto-review Rules:
Ask first: Before emailing anyone outside my company.
Allow automatically: Reading public web pages.
"Ask first" wins when rules conflict.
Keep a secret
When an Agent needs an API key or password it sends a secret card. Paste the value there — it goes to the macOS Keychain, is injected only as an environment variable into the commands that need it, and is redacted from anything the Agent reads back. You'll find saved secrets under the Agent's details (⌘⇧I) → Secrets.
Save a skill, or teach one
When an Agent gets something right, tell it: "Save that as a skill called Framework comparison." Next time, type / in the composer to pick it.
Or show it: click Teach a task in the chat header, do the task yourself in the Agent's browser (up to ten minutes), and stop. Asylum turns what you did into a skill — with password fields recorded as [secret], never their contents.
Put it on a schedule
Just ask:
Every weekday at 8am, check Hacker News for Rust news and
send me the three most interesting stories.
The Agent creates a routine and shows its card with the schedule in plain English. Routines run in your timezone, including across daylight saving changes. Open the Agent's details → Tasks to pause one, run a test, or see its last 20 runs.
Routines can also run on an interval, on a webhook, or on app events. Each routine gets a private URL:
curl -X POST http://127.0.0.1:47821/routines/<id> \
-H "Authorization: Bearer <key>" -d '{"issue": 482}'
Connect your tools
Open the Marketplace (⌘⇧M). Add DeepWiki — it needs no sign-in — then ask your Agent a question about any public GitHub repository. For GitHub, Linear, Notion and the rest, click Connect and sign in through your browser; add a second labeled account if you have one. Each tool can be switched off individually.
Have your own MCP server? Choose Custom MCP server and give it an HTTPS URL or a local command.
Build a team
Press ⌘N and create a second Agent — say a Writer. In its Agent settings → Model, pin it to a different provider than the Researcher: maybe Opus through Anthropic for the writing and a local Qwen for the research.
Now press ⌘N again, choose Custom, tick both Agents, and start a group chat (2–6 Agents). Mention one with @Writer, or everyone with @everyone. Agents can hand work to each other too:
@Researcher find the numbers, then hand them to @Writer for a
two-paragraph summary.
Share it with your team
From ⌘N, choose Create new Team Agent. It walks you through its own setup: connectors, secrets, reference files, and skills. When it's ready, give it a name and a description (140 characters), then Publish to team. Its Share tab has a link teammates open to add it, and Bring to your team's Slack to give it its own Slack app.
Prefer to share a personal Agent's setup instead? Create template produces a link that installs a copy — instructions, skills, and routines, never your secrets.
Keep an eye on it
Settings → Activity shows the last week at a glance: conversations, actions, what approvals stopped, the most used tools, and the busiest Agents. Below that is the Action Recording log, the audit log, and export for every conversation.
And when you want quiet: ⌘. stops the current Agent, and pausing a routine stops it from waking.