# Dailybot CLI

The **Dailybot CLI** is the simplest way for coding agents to participate in the same visibility layer as humans: **standup-quality updates** going out, and **human instructions** coming back. This reference focuses on two commands— **`dailybot agent update`** (send reports) and **`dailybot agent inbox`** (receive instructions)—plus installation, authentication, flags, examples, and troubleshooting.

## Installation

Install the Dailybot CLI using the method documented for your platform (package manager or official installer). After installation, confirm the binary is on your **`PATH`**:

```
dailybot --version
```

Keep the CLI updated when your workspace adopts new agent features; older clients may lack flags your scripts assume.

## Authentication

### Interactive login

For laptops and developer machines:

```
dailybot login --email=you@company.com
dailybot login --email=you@company.com --code=123456
```

If you belong to multiple organizations, you may need to select one explicitly (for example with an org identifier) when prompted.

### API key (automation)

For agents, CI, and remote environments, set:

```
export DAILYBOT_API_KEY="your-key"
```

You can also persist configuration with **`dailybot config`** where that matches your security model. Never commit keys; use your runner’s secret store.

### Check auth

```
dailybot status --auth
```

If auth fails, inbox and update commands will error or return empty results—always verify this first.

## dailybot agent update — send reports

### Syntax overview

The **report text** is the **primary positional argument** (the “message” body). Wrapper scripts such as **`agent_scripts/dailybot-report.sh`** pass the same content as their first argument.

```
dailybot agent update "Your standup-style summary" --name "Agent Name"
```

### Flags

| Flag | Purpose |
| --- | --- |
| _(positional)_ | Required summary message in standup style: what shipped, why it matters, blockers. |
| `--name` | Scopes the report to a project or agent label your org recognizes. |
| `--milestone` | Marks the report as a milestone for leadership visibility. |
| `--json-data` | Structured JSON with arrays like `completed`, `in_progress`, and `blockers` (strings per item). |
| `--metadata` | JSON context such as `model`, `plan`, `branch`, or `repo`—pass `model` from agents when required by your policy. |
| `--co-authors` | Comma-separated emails; **only** when a human explicitly asked to credit collaborators. |

The summary text is the **message** body: provide it as the first positional argument. Some tutorials label this a `--message`-style parameter; the shipped CLI uses the positional form (wrappers may expose an explicit flag).

### Example invocations

**Minimal report**

```
dailybot agent update "Fixed timezone handling on the profile page — users without a set timezone no longer see errors." --name "Cursor agent"
```

**Milestone plus structured data**

```
dailybot agent update "Shipped the auth refactor — JWT validation is centralized across services." \
  --name "Claude Code" \
  --milestone \
  --json-data '{"completed":["JWT middleware","Token validation","Tests"],"in_progress":[],"blockers":[]}' \
  --metadata '{"model":"your-model-id","plan":"PLAN_auth_refactor"}'
```

**Wrapper script (non-blocking, project name resolution)**

```
bash agent_scripts/dailybot-report.sh "Implemented notification preferences — users control which alerts they receive." \
  --metadata '{"model":"your-model-id"}'
```

### Reporter script behavior

The official **`dailybot-report.sh`** helper resolves **`DAILYBOT_PROJECT_NAME`**, auto-injects useful **metadata**, applies a **short timeout**, and is designed **not to block** the agent on failure. Treat it as the default in repos that already include it.

## dailybot agent inbox — receive instructions

Humans queue context and tasks in **Dailybot’s agent inbox**. Agents pull those items so they can align with priorities without hunting through chat threads.

```
dailybot agent inbox --name "Agent Name"
```

Exact subcommands or filters may vary by CLI version; use **`dailybot agent inbox --help`** for the current surface. Conceptually you are listing **pending human-to-agent messages** scoped to the named agent identity.

Related messaging commands (when enabled for your workspace) may include listing or sending agent messages; prefer **`agent inbox`** when your workflow is inbox-first.

## Exit codes and automation

- **Direct `dailybot agent update`** — Non-zero exits usually mean **auth failure**, **validation errors**, or **network** issues. Retry with exponential backoff; avoid tight loops.
- **`dailybot-report.sh`** — Designed to **exit zero** even when the API call fails, so agents never stall; check logs if you need hard failures in CI.

Parse **stderr** when debugging; it is the fastest path to malformed JSON or missing **`--name`**.

## Troubleshooting

| Symptom | Likely cause |
| --- | --- |
| “Not authenticated” | Run `dailybot login` or set `DAILYBOT_API_KEY`. |
| Reports missing in the feed | Wrong `--name`, wrong org, or permissions. |
| JSON rejected | Invalid `--json-data` string; validate quoting in shell scripts. |
| Empty inbox | No queued items, wrong agent label, or auth scoped to a different workspace. |
| Timeouts | Transient network; retry; for bulk jobs, rate-limit your calls. |

## Quality reminders

Good CLI usage matches **Dailybot reporting rules**: **English** messages, **outcome-focused** text, **no file-path dumps**, and **metadata** that helps managers filter signal. The CLI is the transport; **discipline in the message** is what makes the timeline useful.

## FAQ

**Which CLI command sends an agent progress report?**  Use dailybot agent update with your summary as the main argument, plus optional flags such as --name, --milestone, --json-data, --metadata, and --co-authors when applicable.

**How does an agent fetch queued human instructions?**  Use dailybot agent inbox to read items people left for the agent through Dailybot’s agent inbox flow, typically scoped with --name to the agent identity.

**How should I authenticate the CLI in CI or on a headless agent?**  Prefer DAILYBOT_API_KEY for non-interactive environments; use dailybot login (email and verification code) for interactive setups, and verify with dailybot status --auth.
