Skip to content

The Dailybot CLI

One binary. Every Dailybot verb. Wherever your shell runs.

The `dailybot` CLI turns every public Dailybot verb into a single shell command. Report from your terminal, message your team from CI, ask the assistant from a pipe, wire an agent loop with deterministic hooks. Open source, dual-auth, cross-platform — no SDK to import, no runtime to install.

$ curl -sSL https://cli.dailybot.com/install.sh | bash

macOS · Linux · Windows · WSL

The point of the CLI

  • One binary, zero runtime

    A single native binary. No Node, no Python, no Docker. `dailybot --version` should be your first prompt.

  • Every verb is a command

    If it exists in the Dailybot API, it exists as a `dailybot` subcommand. No API keys to plumb, no HTTP client to write.

  • Dual-auth: OTP or API key

    Personal OTP for developers, long-lived key for CI. Same access, same commands, same output.

  • Non-blocking, scriptable, JSON-first

    `--json` on every command. Never halts your primary work. Exit codes match POSIX conventions — safe to chain in a pipeline.

The Dailybot CLI in numbers

15+

shipping commands

6

install channels — curl, brew, npm, apt, winget, manual

4

chat platforms — Slack, Teams, Discord, Google Chat

MIT

licensed. Every release, forever.

The verbs your team already uses, on the command line.

Every command wraps a documented public endpoint 1:1. Nothing hidden, nothing proprietary. Fifteen commands you can memorize in an afternoon.

Auth

Get in, know who you are.

  • dailybot login

    OTP-based login. Stores a session token in `~/.config/dailybot/`.

  • dailybot status

    Pending check-ins by default; `--auth` shows which credential is active.

Reporting

Make your work visible in one line.

  • dailybot agent update

    Post a standup-style report. Non-blocking, returns a direct URL to the update.

  • dailybot hook

    Deterministic lifecycle hooks for the agent harness — local ledger only.

Messaging

Post anywhere your team already listens.

  • dailybot chat send

    Send bot messages to users, channels, or entire teams — Slack, Teams, Discord, Google Chat.

  • dailybot chat update

    Edit a message you already sent — parent or any thread reply.

Assistant

Ask Dailybot without leaving your shell.

  • dailybot ask

    One-shot or a full-screen TUI. Slash commands `/status`, `/checkins`, `/report`, `/help`.

Lifecycle

Stay current. Uninstall clean.

  • dailybot version

    Print the installed version and the newest available on the release channel.

  • dailybot upgrade

    Pull the newest release in-place. Same channel you installed from.

  • dailybot uninstall

    Removes the binary and every config file. No leftover state.

Install in the channel you already trust.

Pick the package manager your machine already knows. Same binary, same commands, whichever route you take. If you're not sure, use the curl one-liner — it works on macOS, Linux, and WSL.

curl -sSL https://cli.dailybot.com/install.sh | bash

Every release ships as prebuilt binaries for macOS (Apple Silicon + Intel), Linux (x86_64 + arm64), and Windows (x86_64). The install script auto-detects your platform.

Four shapes the CLI takes in production.

These are the patterns we see teams paste in once and forget about. Not idealized snippets — the exact shape of the shell command that ends up in the alias, the CI job, or the agent script.

From your shell

Standup from a one-line alias.

Add one alias to your `.zshrc` / `.bashrc` and your standup update is a single command. Non-blocking — never gets in the way of the work.

alias standup='dailybot agent update'

standup "Shipped the auth refactor — JWT now works across all services."

From CI/CD

Release reports without a Slack app.

Store `DAILYBOT_API_KEY` as a CI secret and every deploy posts its own release note. No custom Slack bot, no webhook plumbing.

# .github/workflows/deploy.yml
- name: Report deploy
  env:
    DAILYBOT_API_KEY: $SECRETS_DAILYBOT_API_KEY
    RELEASE_TAG: $GITHUB_REF_NAME
  run: |
    dailybot chat send \
      -c $RELEASES_CHANNEL \
      -m "Shipped $RELEASE_TAG :rocket:"

From an agent loop

Agents that report before they log off.

Wrap any long-running agent with `dailybot hook session-start` and `dailybot agent update` on exit. The team sees agents finish work — not just start it.

dailybot hook session-start -f generic

# ... agent does the work ...

dailybot agent update \
  "Refactored the payments module — extracted the retry logic into a shared helper." \
  --metadata '{"model":"claude-opus-4.7"}'

From ChatOps

Threaded release notes in one call.

One `dailybot chat send` posts the headline and up to ten thread replies together. No timing races, no missing follow-ups.

dailybot chat send \
  -c C0123456789 \
  -m "Release v4.12.0 shipped :rocket:" \
  --thread-message "Frontend deploy: green" \
  --thread-message "Backend deploy: green" \
  --thread-message "Migrations: applied"

For AI coding agents

Prefer to drive the CLI through your AI agent? Install the Skill.

The Dailybot Agent Skill is the CLI on rails: it teaches every major AI CLI — Claude Code, Cursor, OpenAI Codex, Gemini, Copilot — how to invoke the right `dailybot` verb at the right time. Same binary underneath. Same auth, same output. Your agent stops being a black box and starts landing in your team's standup.

What every Dailybot CLI command guarantees.

Four rules the CLI enforces on itself. That's the contract with your shell, your CI, and your agent harness.

01

1:1 API mapping

Every subcommand wraps a single public Dailybot endpoint. If it works via the API, it works from the CLI. Nothing hidden, nothing extra.

02

Dual-auth parity

Reads either `dailybot login` or `$DAILYBOT_API_KEY`, picks whichever is available. Same access on your laptop and in CI.

03

JSON-first output

`--json` on every command. Human output on stdout, warnings on stderr, POSIX exit codes. Safe to pipe, safe to grep.

04

Non-blocking, always

Reports, hooks, and messages never halt your primary work. A failed publish becomes a warning, not a stack trace. The CLI is a tool, not a dependency.

Why a CLI, not just an SDK.

An SDK asks you to import a library, match a version, and manage a runtime. A CLI asks nothing: it drops one binary into `/usr/local/bin` and works in every shell, every pipeline, every Makefile, every agent harness. When we say the CLI is the shortest path to Dailybot, we mean it literally — the CLI ships every verb our own agents use every day, MIT-licensed, cross-platform, and no SDK-shaped ceremony required.

  • Portable

    One binary, no runtime. Runs in a container as easily as on your laptop or a Raspberry Pi.

  • Scriptable

    JSON output, POSIX exit codes, `--json` on every verb. Safe to pipe into `jq`, safe to chain with `&&`.

  • Honest

    Open-source, MIT, dual-auth. If you outgrow it, fork it. Nothing about your workflow is locked to us.

The road so far.

The public roadmap lives in the CLI repo's CHANGELOG. Here is the short version.

Past

Dual-auth from day one

`dailybot login` and `DAILYBOT_API_KEY` grant identical access — the CLI was built to work the same on your laptop and in CI without a single conditional in your scripts.

Now

15+ commands, TUI included

Auth, reporting, messaging, `ask` with a full-screen Textual TUI, deterministic agent hooks — all shipping and mapped 1:1 to public API verbs.

Next

More platforms, tighter feedback

Deeper CI integrations, more subcommands as new endpoints ship, and a shorter loop between what the CLI does and what our own agents ask for.

One install. Every Dailybot verb, wherever your shell runs.

The CLI is a single line to install and a single command to try. Start with `dailybot login`, then `dailybot agent update "Trying the CLI"` — that report lands in your team's standup a second later.