Auth
Get in, know who you are.
dailybot loginOTP-based login. Stores a session token in `~/.config/dailybot/`.
dailybot statusPending check-ins by default; `--auth` shows which credential is active.
The Dailybot CLI
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 | bashmacOS · 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.
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.
Every command wraps a documented public endpoint 1:1. Nothing hidden, nothing proprietary. Fifteen commands you can memorize in an afternoon.
Auth
dailybot loginOTP-based login. Stores a session token in `~/.config/dailybot/`.
dailybot statusPending check-ins by default; `--auth` shows which credential is active.
Reporting
dailybot agent updatePost a standup-style report. Non-blocking, returns a direct URL to the update.
dailybot hookDeterministic lifecycle hooks for the agent harness — local ledger only.
Messaging
dailybot chat sendSend bot messages to users, channels, or entire teams — Slack, Teams, Discord, Google Chat.
dailybot chat updateEdit a message you already sent — parent or any thread reply.
Assistant
dailybot askOne-shot or a full-screen TUI. Slash commands `/status`, `/checkins`, `/report`, `/help`.
Lifecycle
dailybot versionPrint the installed version and the newest available on the release channel.
dailybot upgradePull the newest release in-place. Same channel you installed from.
dailybot uninstallRemoves the binary and every config file. No leftover state.
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 | bashbrew install dailybothq/tap/dailybotnpm install -g @dailybot/clicurl -fsSL https://cli.dailybot.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/dailybot.gpg
echo "deb [signed-by=/usr/share/keyrings/dailybot.gpg] https://cli.dailybot.com/apt stable main" \
| sudo tee /etc/apt/sources.list.d/dailybot.list
sudo apt update && sudo apt install dailybotwinget install DailybotHQ.CLI# Grab the release for your OS/arch
curl -L https://github.com/DailybotHQ/cli/releases/latest/download/dailybot-linux-x86_64 \
-o /usr/local/bin/dailybot
chmod +x /usr/local/bin/dailybot
dailybot --versionEvery 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.
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
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
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
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
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
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.
Four rules the CLI enforces on itself. That's the contract with your shell, your CI, and your agent harness.
01
Every subcommand wraps a single public Dailybot endpoint. If it works via the API, it works from the CLI. Nothing hidden, nothing extra.
02
Reads either `dailybot login` or `$DAILYBOT_API_KEY`, picks whichever is available. Same access on your laptop and in CI.
03
`--json` on every command. Human output on stdout, warnings on stderr, POSIX exit codes. Safe to pipe, safe to grep.
04
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.
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 public roadmap lives in the CLI repo's CHANGELOG. Here is the short version.
Past
`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
Auth, reporting, messaging, `ask` with a full-screen Textual TUI, deterministic agent hooks — all shipping and mapped 1:1 to public API verbs.
Next
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.
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.