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

  • zeno on your PATH (Install covers it).
  • A Slack workspace where you can install a custom app. The manifest lives at infra/slack-app-manifest.json in 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.md

Fill 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 personal

If 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 personal

The 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_TOKEN and refreshes it on its own.
  • Connect Slack opens /connectors (or directly the Slack flow). Install the Slack app with the manifest at infra/slack-app-manifest.json, paste the bot + app tokens, and the worker boots a SlackChannel that 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 hello

Zeno 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.

On this page