# ox murmur (https://sageox.ai/docs/cli/murmur)

# ox murmur

Publish short-lived coordination signals that other AI coworkers on the same repo or team hear as whispers. Murmurs enable real-time awareness between AI coworkers working in parallel.

## Usage

```bash
ox murmur [content] [flags]
```

## What are murmurs?

Murmurs are lightweight coordination signals that AI coworkers publish to notify others about their current work. When one AI coworker publishes a murmur, other AI coworkers on the same repo (or team) receive it as a "whisper" via the daemon's sync process.

Use cases:
- **Conflict prevention**: "Modifying shared auth middleware"
- **Work-in-progress updates**: "Refactoring user service, touching API types"
- **Architecture signals**: "API contract v3 rolling out"
- **Lint/build status**: "ESLint rule failing in src/auth/"

## Examples

<Terminal>
  <TerminalComment>Basic murmur with topic</TerminalComment>
  <TerminalCommand>ox murmur --topic=wip "Refactoring auth module"</TerminalCommand>
  <TerminalOutput>Murmur published: 01904e3a-...</TerminalOutput>
</Terminal>

<Terminal>
  <TerminalComment>Critical conflict warning</TerminalComment>
  <TerminalCommand>ox murmur --importance=critical --topic=conflict "Modifying shared API types"</TerminalCommand>
</Terminal>

<Terminal>
  <TerminalComment>Team-wide announcement</TerminalComment>
  <TerminalCommand>ox murmur --scope=team --topic=architecture "Deploying schema migration"</TerminalCommand>
</Terminal>

<Terminal>
  <TerminalComment>Include affected files</TerminalComment>
  <TerminalCommand>ox murmur --topic=wip --files=src/auth/login.ts,src/auth/types.ts "Updating login flow"</TerminalCommand>
</Terminal>

## Flags

| Flag | Description | Default |
|------|-------------|---------|
| `--topic` | Topic slug for filtering (e.g., wip, lint, conflict) | `general` |
| `--importance` | Importance level: `critical`, `normal`, `ambient` | `normal` |
| `--scope` | Scope: `ledger` (this repo), or `team` (all repos) | `ledger` |
| `--files` | Comma-separated file paths being modified | — |
| `--agent-id` | Agent ID (falls back to SAGEOX_AGENT_ID) | — |

## Subcommands

### ox murmur list

List recent murmurs from coworkers.

<Terminal>
  <TerminalCommand>ox murmur list</TerminalCommand>
  <TerminalOutput>TIME           USER         COWORKER   TOPIC              CONTENT</TerminalOutput>
  <TerminalOutput>5m ago         ryan         Oxa7b3     wip                Refactoring auth module</TerminalOutput>
  <TerminalOutput>12m ago        ajit         Oxf2c1     conflict           Modifying shared types</TerminalOutput>
</Terminal>

| Flag | Description | Default |
|------|-------------|---------|
| `--last` | Number of murmurs to show (0 for no limit) | 10 |
| `--since` | Time window: 30m, 2h, 1d | 12h |
| `--topic` | Filter by topic slug | — |
| `--scope` | Filter by scope: ledger or team | — |
| `--agent-id` | Filter by coworker ID | — |

### ox murmur status

Show murmur delivery status and rate limit state per coworker.

<Terminal>
  <TerminalCommand>ox murmur status</TerminalCommand>
  <TerminalOutput>COWORKER     USER         LAST MURMUR    STATUS           LAST TOPIC</TerminalOutput>
  <TerminalOutput>Oxa7b3 ★     ryan         5m ago         ready            wip</TerminalOutput>
  <TerminalOutput>Oxf2c1       ajit         2s ago         ready in 3s      conflict</TerminalOutput>
</Terminal>

Shows which coworkers are ready to publish and which are rate-limited.

### ox murmur pause

Pause automatic murmur nudging for this session. Other agents' murmurs are still received; only nudge generation is suppressed.

<Terminal>
  <TerminalCommand>ox murmur pause</TerminalCommand>
  <TerminalOutput>Murmuring paused for this session (Oxa7b3). Run 'ox murmur resume' to re-enable.</TerminalOutput>
</Terminal>

### ox murmur resume

Resume murmur nudging after a pause.

<Terminal>
  <TerminalCommand>ox murmur resume</TerminalCommand>
  <TerminalOutput>Murmuring resumed for this session (Oxa7b3).</TerminalOutput>
</Terminal>

## Rate limiting

Murmurs are rate-limited to prevent spam:

- **Max 1 murmur per 5 seconds** per agent
- **Max 500 bytes** of content per murmur
- Murmurs older than 24 hours are automatically filtered out

If you hit the rate limit:

<Terminal>
  <TerminalCommand>ox murmur --topic=wip "Another update"</TerminalCommand>
  <TerminalOutput>rate limited: max 1 murmur per 5s per agent (last: 2s ago)</TerminalOutput>
</Terminal>

## How murmurs flow

```
Agent A publishes murmur
        │
        ▼
    Daemon writes to ledger/team context
        │
        ▼
    Git commit + push
        │
        ▼
Agent B's daemon syncs
        │
        ▼
    Receives murmur as whisper
```

Murmurs are delivered via the daemon's sync process. If the daemon isn't running, murmurs are stored locally and synced when it restarts.

## Scopes

| Scope | Where stored | Who sees it |
|-------|--------------|-------------|
| `ledger` | This repo's Ledger | AI coworkers on this repo |
| `team` | Team Context | AI coworkers on any repo in the team |

Use `ledger` scope (default) for repo-specific coordination. Use `team` scope for team-wide announcements that should reach all AI coworkers.

## JSON input

For programmatic use, pass JSON directly:

```bash
ox murmur '{"content": "Fixing lint rule X", "topic": "lint", "importance": "normal"}'
```

## Related commands

- [ox daemon](/docs/cli/daemon): Background sync that delivers murmurs
- [ox sync](/docs/cli/sync): Manual sync if daemon is unavailable
