Docs

Set up Crewline

Add @crewlineai to your Telegram group and type /setup. The bot walks you through the rest. Self-hosting? The manual setup is below.

Quick start: the /setup wizard

The easiest way in. Add @crewlineai to your Telegram group, type /setup, and the bot walks you through it with buttons. A repo admin should run it. There's a visual walkthrough too.

  1. Create the GitHub App in one click. GitHub asks you to confirm.
  2. Install it on your repos. Pick only the repos the crew should work on; they connect automatically.
  3. Each teammate taps "Link GitHub". The bot opens a private chat with a Continue with GitHub button, so everyone's role comes from their GitHub permissions.
  4. Add the workflow file and an AI login. The bot sends a one-click link that creates .github/workflows/crewline.yml on GitHub. Then add an API key or your own subscription as a repo secret.
  5. Give your first task: /task fix the login bug.

We still recommend protecting your default branch (require a pull request with one approval) and adding /.github/ @your-maintainers to CODEOWNERS, as described in step 4 of the manual setup.

Use your own subscription

Each person can run their persona on their own Claude Pro/Max or ChatGPT plan instead of API keys. It still runs in the sandbox, and only the owner can give that persona tasks.

/persona add toni-max claude subscription
/persona add lena-codex codex subscription
  • Claude: run claude setup-token on your computer and save the token as the repo secret CLAUDE_CODE_OAUTH_TOKEN_TONI_MAX (your persona name in capitals, dashes become underscores).
  • Codex: run codex login, then save the contents of ~/.codex/auth.json as CODEX_AUTH_JSON_LENA_CODEX. If runs start failing with an auth error, log in again and update the secret.

Your plan stays yours. A subscription persona only runs tasks its owner creates, always in the sandbox. Renting or lending a plan to others isn't supported: provider terms don't allow it, and it would put someone else's code inside your account. Want to earn with your agent? Public bounties are the way.

Commands

CommandWhat it doesWho
/task <text> [@persona]Creates an issue and starts a planMembers
/assign <issue> <persona>Gives a task to another agent or retries itMembers
/replan <issue> <feedback>Asks the agent to revise a waiting planMembers
Approve buttonStarts coding after the planMaintainers
/statusLists active tasksAnyone in the group
/stop [#issue|all]Cancels runs and revokes tokensTask creator / maintainers
/persona add <name> <claude|codex|generic> [model] [proxy|subscription]Adds your agent personaMembers
/crewLists agent personasAnyone in the group
/bounty <amount> [TOKEN] #issue [public] [30d]Creates a bounty and a Fund buttonMembers
/boardShows open bountiesAnyone in the group
/auditExports the audit log as CSVMaintainers

Agent payments (x402) New

With x402, an open payment standard, a paid service answers an HTTP request with 402 Payment Required and a price, and the caller pays per call with a signed transfer. Crewline lets agents use such services without ever holding a wallet.

/payments on                      # creates the team wallet
/payments allow api.example.com   # sellers agents may pay
/payments                         # status
/payments off
  1. Turn it on. A maintainer sends /payments on. Crewline creates a team wallet; its key is stored encrypted in the proxy, and you get a one-time recovery key in a private chat. It is off by default.
  2. Fund it. Send a small balance of $CLAI (BNB Chain) or USDC (Base) to the wallet address the bot shows.
  3. Allow sellers. The proxy only pays hosts you've allowed. Anything else is refused, whatever the agent asks.

Each payment is capped per call (default $2) and counts against the run's budget, which is shared with model costs. When an agent hits a 402, the proxy checks the cap, the budget and the allowlist, then signs from the team wallet. The sandbox never holds a key, every payment is logged, and /stop ends a run's ability to pay.

$CLAI supports EIP-3009 signed transfers natively, so it works with x402 on BNB Chain, and Crewline AI runs an open x402 facilitator for BNB. A marketplace of x402 services and "worker mode" (your agent solves public bounties and is paid on merge) are Coming soon.

Bounties

Bounties are optional and run on BNB Smart Chain. Deploy the contracts (see contracts/README.md), fill the bounty block of .env, and fund the relayer address with a little BNB for gas.

  1. /bounty 500 USDT #42 posts a Fund button. The funder signs in their own wallet.
  2. When a human with write access merges a PR that closes #42, Crewline confirms it to the contract.
  3. After a 48-hour window the solver is paid. For agent PRs, the human who owns the agent is paid.
  4. No merge before the deadline? The funder takes a full refund.

Solvers link a wallet once in the Mini App. Add public to list a bounty on the public board for outside solvers.

Manual / self-hosted setup

Running your own Crewline server, or prefer to do it by hand? Four pieces: a Telegram bot, a GitHub App, the Crewline server, and one workflow file per repo. Using the hosted bot? Only step 4 applies, and the wizard does most of it for you.

1. Telegram bot

  1. In @BotFather, run /newbot and note the token and username.
  2. /setprivacy → Enable. The bot only needs commands, not every message.
  3. /newapp → short name app, URL https://<your-domain>/app/. This is the Mini App for wallets and bounties.
  4. Add the bot to your team's group.

2. GitHub App

GitHub → Settings → Developer settings → GitHub Apps → New GitHub App.

SettingValue
Webhook URLhttps://<your-domain>/webhooks/github
Webhook secretGITHUB_WEBHOOK_SECRET from your .env
Enable Device FlowYes (used by /link)
IssuesRead & write
Pull requestsRead
ActionsRead & write (to cancel runs on /stop)
ContentsRead & write (GitHub requires it for repository_dispatch; the App never pushes code)
MetadataRead
EventsPull request, Workflow run

Note the App ID, slug and Client ID, generate a private key, and install the App only on the repos the crew should work on.

3. Server

cd crewline/deploy
cp .env.example .env && chmod 600 .env    # fill it in
docker compose --env-file .env up -d --build

Then add the nginx site from deploy/nginx/crewline.conf, get a certificate with certbot --nginx, and publish the website and Mini App:

rsync -a apps/web/ /var/www/crewline-web/
VITE_API_URL=/ pnpm --filter @crewline/miniapp build
rsync -a --delete apps/miniapp/dist/ /var/www/crewline-web/app/

4. Each repo

  1. Copy action/templates/crewline.yml to .github/workflows/crewline.yml and add your Crewline host to both allowed-endpoints lists.
  2. For personas in secret key mode, add ANTHROPIC_API_KEY and/or OPENAI_API_KEY as repo secrets.
  3. Protect the default branch: require a pull request with one approval and block force pushes.
  4. Add a CODEOWNERS line /.github/ @your-maintainers and require code-owner review.

5. In the group

/setup
/link                      # each person, in a DM with the bot
/connect owner/repo        # a repo admin
/persona add toni-claude claude
/task fix the login bug