Create your profile
From zero to "@zeno hello" in five steps.
A profile is one Zeno instance — its own container, dashboard, master key, USER.md, and credentials. You can have many side by side (personal, work, etc.); each one is independent.
This page walks the happy path end-to-end. By the end you'll have a profile running, Claude connected, one connector installed, and Zeno replying in Slack.
Prerequisites
zenoon your PATH (Install covers it).- A Slack workspace where you can install a custom app. The manifest lives at
infra/slack-app-manifest.jsonin the repo. - A Claude account on a Pro or Max plan.
Walkthrough
Create the profile
zeno profile create personal --owner "Alice"The CLI allocates a host port (6101+), generates a master key, and scaffolds ~/.zeno/profiles/personal/USER.md and .env from the templates under templates/profile/.
Edit your USER.md
$EDITOR ~/.zeno/profiles/personal/USER.mdFill in your name, time zone, communication preferences, and any context you want the agent to know about (project names, language preferences, what you don't want it to do). The agent reads this file on every turn.
Start the container
zeno start personalIf the zeno-agent:dev image is missing, the CLI builds it for you. First start can take a couple of minutes.
Open the dashboard
zeno open personalThe browser lands on http://localhost:6101/ (or the port allocated to your profile — zeno profile list shows it). The first-run hero walks you through three steps: Configure Claude, Connect Slack, Schedule a cron. Do them in that order.
- Configure Claude opens the OAuth flow. Sign in with the Claude account that owns your Pro/Max subscription. Zeno never sees your password — it stores a
CLAUDE_CODE_OAUTH_TOKENand refreshes it on its own. - Connect Slack opens
/connectors(or directly the Slack flow). Install the Slack app with the manifest atinfra/slack-app-manifest.json, paste the bot + app tokens, and the worker boots aSlackChannelthat listens via Socket Mode.
The worker can boot without Slack creds — it falls back to a NoopChannel that quietly drops events. So the first-run flow is: start the container, install Slack via the dashboard, then restart the container so the SlackChannel takes over. No manual env editing required.
Mention the bot
In any Slack channel where the bot is invited:
@zeno helloZeno replies. If it doesn't, Daily ops covers zeno logs and zeno doctor.
What's next
- Browse Connectors to learn the model and add more (GitHub, Linear, etc.).
- Read Daily ops for the commands you'll run every day.
- See the Connector catalogue for the full list of connectors that ship today.