Quick start
Get Mode Agent running in under 60 seconds. Install, authenticate, and start your first session.
It is a CLI tool that runs your growth as a set of specialized agents, one per channel (content, social, email, ads, seo, researcher), coordinated by a planner. They communicate through a shared signal bus.
Get started in 3 steps
- Install Mode Agent
- Authenticate by running
mode - Start Mode Agent and describe your task
Ready? Start with Installation.
Installation
Install Mode Agent with a single command.
Quick install
curl -fsSL https://gotmode.sh | sh
Verify
mode --version 0.0.1
Authenticate
Mode Agent authenticates you the first time you run it.
modeThe first time you run mode, it opens your browser for magic link authentication. Once you confirm, the CLI is authenticated and ready to use. You won't need to authenticate again on this machine.
First session
Start Mode Agent and describe your first task.
Type mode to enter an interactive session.
modeOnce inside the session, describe what you want to grow. The Agent reads your goal, deploys the right channel agents, and they execute in parallel.
The Agent will do the following.
- Decompose your goal into tasks
- Assign each task to a specialized agent
- Execute agents in parallel
- Deliver results you approve before anything spends or publishes
What happens under the hood
The planner agent reads your goal, decides which agent roles are needed, and coordinates execution. For a "Grow signups for the spring launch" task, it might spawn the following agents.
researcherprofiles the audience and finds where they already arecontentdrafts the launch post and two follow-upsemailwrites the announcement and a reminder sequenceadsbuilds two ad sets and holds them for your approval
All running simultaneously, communicating through signals.
Agents
Mode Agent spawns a specialized agent for each growth channel. Each agent has a specific job and acts only within the permissions you set.
Built-in agent roles
It ships with one agent role per growth channel plus the roles that coordinate them.
Coordination
| Role | Responsibility |
|---|---|
planner | Breaks the growth goal into tasks, coordinates all agents, manages execution order |
reviewer | Checks every draft against your voice rules and permissions, gates anything that publishes or spends |
measure | Pulls results from connected accounts, ties them to the work that produced them, writes the daily brief |
Channels
| Role | Responsibility |
|---|---|
content | Blog posts, landing page copy, brand voice copy, content calendars |
social | Social posts in platform-native formats, scheduling, replies to flag for you |
email | Announcements, nurture sequences, newsletters, list hygiene |
ads | Campaign creative, A/B ad variants, audience targeting, budgets held for approval |
seo | Keyword research, meta tags, structured data, page fixes, rank tracking |
researcher | Market and customer research, audience profiles, trend discovery |
Orchestration
The planner agent coordinates all other agents through a shared signal bus.
How a run works
- You describe your goal and Mode Agent deploys agents
- The planner decomposes it into tasks and assigns them to agents
- Agents execute in parallel, emitting signals as they work
- The reviewer checks every draft against your rules and holds anything that spends or publishes for your approval
Parallel execution
Unlike sequential AI tools, the Agent runs multiple agents simultaneously. The planner identifies independent tasks and launches them in parallel, only serializing when there are true dependencies.
Signals
Agents communicate by emitting and subscribing to typed signals, not by calling each other directly.
How signals work
Every agent action produces a signal on the shared bus. Other agents can subscribe to specific signal types to coordinate their work.
[email] emit draft.created launch-announcement [reviewer] recv draft.created → checking voice rules, queued for your approval [measure] recv draft.created → watching for sends and signups
Signal types
| Signal | Emitted when |
|---|---|
task.started | An agent begins work on a task |
task.completed | An agent finishes a task |
draft.created | A post, email, ad, or page edit is drafted |
draft.modified | An existing draft is changed |
approval.requested | Something that spends or publishes is waiting for you |
approval.granted | You approved it and it is scheduled |
result.recorded | A measurable outcome is tied back to a draft |
error | An agent encounters an error |
View signals in real-time with mode logs --follow.
Permissions
Mode Agent runs every agent in a sandboxed environment. You define the boundaries once in your config and agents operate freely within them. No permission prompts, no interruptions.
{
"permissions": {
"fs": {
"roots": ["./src", "./test"],
"deny": [".env", "secrets/**"]
},
"bash": {
"allow": ["git", "npm", "make"]
}
}
}File system sandbox
fs.roots defines the directories that make up the sandbox. Agents can read and write freely inside these roots. Everything else is invisible.
fs.deny carves out exclusions within the sandbox for secrets, credentials, and sensitive config.
Command sandbox
bash.allow defines which shell commands agents can execute inside the sandbox. Pipes and subshells that would reach outside the sandbox are blocked automatically.
See Permissions configuration for the full reference.
mode
Start Mode Agent. Authenticates automatically on first run.
modeStarts an interactive Mode Agent session. If this is your first time, it opens your browser for magic link authentication. Once authenticated, you're taken straight into the session.
mode logs
Stream or replay agent signals from a run.
mode logs [run-id] # Replay signals for a run mode logs --follow # Stream live signals from current run mode logs --agent email # Filter to one agent
mode stop
Stop a running agent or an entire run.
mode stop # Stop all agents in current run mode stop --agent ads # Stop a specific agent mode stop --run abc123 # Stop a specific run by ID
Config file
Place .mode/config.json in your project root. Mode Agent reads this file automatically on every session.
{
"permissions": {
"fs": { "roots": ["./src", "./test"] },
"bash": { "allow": ["git", "npm", "make"] }
}
}The config file is for permissions only.
Permissions config
Full reference for the sandbox configuration block. Define the boundaries once and agents operate freely within them.
| Key | Type | Description |
|---|---|---|
fs.roots | string[] | Directories that form the file system sandbox |
fs.deny | string[] | Glob patterns excluded from the sandbox |
bash.allow | string[] | Shell commands available inside the sandbox |
bash.deny | string[] | Commands excluded even if listed in allow |
net.allow | string[] | Outbound hostnames reachable from the sandbox |
net.deny | string[] | Outbound hostnames blocked from the sandbox |
allow and deny, it is excluded from the sandbox.REST API
The Mode Agent REST API will let you start runs, stream signals, and manage agents programmatically.
Base URL
The base URL will be published here when the API goes live. There is no live endpoint to call yet.
Planned endpoints
| Method | Path | Description |
|---|---|---|
POST | /v1/runs | Start a new agent run |
GET | /v1/runs/:id | Get run status and results |
DELETE | /v1/runs/:id | Stop a run |
GET | /v1/runs/:id/signals | Stream signals (SSE) |
GET | /v1/agents | List available agent roles |
See Authentication to get started.
Authentication
How API requests will authenticate once the REST API is live.
Requests will pass your API key in the Authorization header, in this form.
Authorization: Bearer sk_mode_xxxxxxxxxxxx
API keys will be generated from your dashboard, scoped with specific permissions and rate limits.
Runs
How you will create and manage runs via the API.
POST /v1/runs
Will start a new agent run from a goal and an optional set of agent roles.
GET /v1/runs/:id
Will return the status and results of a run.
Agents
How you will list and inspect available agent roles.
GET /v1/agents
Will return all available agent roles.
Planned response
{
"agents": [
{ "role": "planner", "parallelizable": false },
{ "role": "email", "parallelizable": true },
{ "role": "ads", "parallelizable": true }
]
}