---
title: "The Fredrin CLI"
description: "A strictly noun-verb CLI over the board, designed to be driven by agents as well as people. All output is JSON. Tickets, goals, notes, connectors and more."
url: "https://www.fredrin.com/docs/cli"
updated: "2026-08-11"
---

# The Fredrin CLI

Every command names the resource it acts on. All output is JSON, because the primary caller is an agent rather than a person reading a terminal.

## The grammar

```
fredrin <noun> <verb> [options]
```

Both a noun and a verb are required, always. There are no flat verbs, because `fredrin start` is ambiguous the moment a second resource can be started.

Inside a ticket's worktree the wrapper is `./.fredrin/fredrin`, and it already knows which ticket it is.

## Tickets

```bash
fredrin tickets list [project]
fredrin tickets get <id|identifier>
fredrin tickets create '{"title":"…","description":"…"}'
fredrin tickets context <id>
fredrin tickets attach <id> <file>
```

`tickets context` is the interesting one: it returns the relevance-scoped [project memory](https://www.fredrin.com/docs/memory) for a ticket, the concepts and decisions it actually touches, rather than the most recent N documents.

Creating a ticket accepts `dependsOn`, and the response echoes a per-reference result. A bad reference is skipped rather than fatal, so check the echo instead of assuming the edges landed.

## Goals

```bash
fredrin goals list
fredrin goals create
fredrin goals assign <goal> <ticket>
fredrin goals ask <goal>
```

## Notes

```bash
fredrin notes list
fredrin notes read <name>
fredrin notes write <name>
fredrin notes create|rename|move|delete
```

These reach the project's own [notebook](https://www.fredrin.com/docs/board/notes), not files in your repository. "Read my roadmap note" means this, not a grep.

## Connectors

```bash
fredrin connectors list
fredrin connectors metrics
fredrin connectors revenue
fredrin connectors deploys
fredrin connectors uptime
fredrin connectors health
```

Read live third-party data through the connection that already exists. Do not mint your own provider keys. See [connectors](https://www.fredrin.com/docs/connectors).

## Terminals, servers and sessions

```bash
fredrin terminals new|list|read|send|split|layout|close
fredrin servers start|stop|list
fredrin sessions list|send|reap
```

These drive the desktop app's own panes, which is what lets an agent start your dev server, read its output, and act on it.

## Browser

```bash
fredrin browser navigate|click|type|screenshot|text|console|eval
```

Drive a real browser to verify a change. Screenshots stay on disk unless you explicitly attach them to a ticket, which is the [privacy gate](https://www.fredrin.com/docs/memory/privacy) working as designed.

## Output

Everything is JSON. Pipe it into `jq`, or let an agent parse it. Nothing prints a human-formatted table that a script would then have to unpick.

## Next steps

- [REST API](https://www.fredrin.com/docs/api) - the HTTP surface underneath.
- [MCP server](https://www.fredrin.com/docs/mcp) - the same board, for other agents.
