Skip to main content

CLI Reference

This page documents the stable v2.1.2 CLI baseline. The repository main branch is a 2.1.3 development channel and can contain extra commands that are not part of this stable reference.

Grammar

Host role decides which commands appear in Tab/help. There is no separate server ... / client ... top-level namespace.

Interactive keys

Tab does not execute commands. frpctl history is not written to disk.

Client selector

The canonical selector is CLIENT ID: immutable short machine identity. Changing label, note, tags, or hostname never changes CLIENT ID.
  • show clients prints CLIENT ID first.
  • Tab completes CLIENT ID.
  • A unique label/hostname can be typed manually.
  • Ambiguous selectors fail closed.
  • user@host:port is not a client selector.

Show

status and version remain compatibility shortcuts for the show form.

Set

Server:
Client:
Service IDs are immutable. Client-side pending changes become live after apply.

Unset

unset removes metadata; it does not release public ports or change identity.

Create / add

create zero-touch is the recommended everyday onboarding path.

Enable / disable / apply / discard

Disabling a service keeps the public-port reservation. apply does not release server ports.

Revoke / release / restore

These are never aliases. There is intentionally no ambiguous delete client command.

Update

FRP remains pinned to the tested project version. show upstream is informational.

Other

Stable enrollment states

show enrollments can represent enrollment records in normalized lifecycle states such as:
Secrets are never printed by show, Tab, or help output.
The 2.1.3 development tree adds explicit terminal enrollment purge/retention commands and bootstrap-hostname controls. Do not assume those commands exist on a stable v2.1.2 server.

Compatibility aliases

Last modified on September 7, 2026