---
title: The frwrd command-line tool
description: "Install and use frwrd, the command-line tool for frwrd.to: environment variables and one example for each command."
theme: { accent: "#1f6feb", background: light }
translations: { de: de/hilfe-cli }
---

# The frwrd command-line tool

`frwrd` is a thin client over the API. It reads from standard input and
writes to standard output, prints the API's JSON as it came, and exits with
1 on an error, so it works in a shell script and in an agent's tool call.

## Install

Release binaries for macOS and Linux (arm64 and amd64) are attached to each
tagged release of the source repository. The repository is private for
now, so there is no public download address yet; one will follow here. Until
then, with Go 1.27 or newer and a checkout of the source:

```
go build -o frwrd ./cmd/frwrd
```

## Set up

```
export FRWRD_KEY=fw_...
```

- `FRWRD_KEY`: your workspace key. Creating and recovering a workspace need no key.
- `FRWRD_API`: the API address, `https://api.frwrd.to` unless you set it. It must be https; plain http is accepted for localhost only, so the key never travels in the clear.

Run `frwrd` alone to print every command.

## Links

```
frwrd link create https://example.com/a/long/address -title "Example"
frwrd link list
frwrd link show aB3xZ9
frwrd link stats aB3xZ9 -since 2026-10-01
frwrd link update aB3xZ9 -title "New title" -tags launch,2026
frwrd link archive aB3xZ9
frwrd link qr aB3xZ9 -png -size 512 > code.png
```

`link create` also takes `-hash` for your own hash on a verified workspace.
`link update` takes `-url`, `-title`, `-tags` and `-archived true|false`.
`link qr` writes SVG unless you pass `-png`.

## Pages

A page path is `-` for the root page, `hello` for another page, and
`de/hilfe` for a page in another language.

```
frwrd page list
frwrd page pull hello > hello.md
frwrd page push hello < hello.md
frwrd page push hello -version 3 < hello.md
frwrd page stats hello -since 2026-10-01
frwrd page versions hello
frwrd page delete hello
```

`page pull` prints the version it read on standard error. Pass it to
`page push` as `-version`, and the push fails if someone changed the page
meanwhile.

## Workspace

```
frwrd workspace create acme.com
frwrd workspace show
frwrd workspace verify
frwrd workspace handle acme
frwrd workspace language de
frwrd workspace domains
frwrd workspace domain add links.acme.com
frwrd workspace domain remove links.acme.com
frwrd workspace recover acme.com
frwrd workspace recover-confirm acme.com
```

`workspace create` prints the key once. `recover-confirm` reads the recovery
secret from `FRWRD_RECOVERY_SECRET` or from standard input, so it never
shows up in your shell history. The workspace key page explains both recovery steps.

- [The workspace key](/@frwrd.to/help-key)
- [Back to help](/@frwrd.to/help)
