Official command-line tool for Reolink IP cameras, doorbells and NVRs — LAN only, no cloud.
> /plugin marketplace add reolink/reolink-cli> /plugin install reolink-cli@reolink-cli
A local-first command-line tool for operating Reolink cameras — JSON by default, with a built-in MCP server and a cross-agent skill so AI agents drive the same core.
Control Reolink cameras over your local network — no cloud account, no app.
Script it with jq, or let an AI agent drive it in plain language.
$ reolink-cli --camera front-door info | jq '.data | {model, firmware, name}'
{
"model": "Reolink Video Doorbell",
"firmware": "v3.0.0.6696_26062799",
"name": "Front Door"
}
What this repository is. The official distribution point for the prebuilt
reolink-clibinaries (proprietary, royalty-free EULA — see License), plus the agent skill, plugin manifests and installers (Apache 2.0). The CLI source code is not published here.
It talks to Reolink devices directly over your LAN:
device expand <nvr> registers one entry per
channel, which is also the only way to reach a battery camera paired to a hubFeatures differ by model. Ask the camera rather than guessing:
reolink-cli --camera porch capabilities
An operation the model does not implement fails with a clear "device does not support" error, never silently.
device importpreview play, file/stdout capture, batch capture, JPEG snapshotevents monitor)The authoritative command list comes from the binary: reolink-cli --help,
reolink-cli <command> --help, or reolink-cli features for a machine-readable
manifest.
For a terminal walkthrough, see the Operator Guide. For command-oriented navigation, see the CLI Reference.
| Area | Commands | What you can do |
|---|---|---|
| Setup & registry | init, device, config, doctor, setup | Scaffold config, register/import cameras, tag them, health-check the install |
| Connect & inspect | ping, login, info, capabilities, status, benchmark | Reach a camera, read model/firmware/serial, list what the model supports, measure round-trip latency |
| Discovery | discover | Find cameras on the LAN (broadcast) |
| Live media | preview, snapshot, stream | Play or capture live video, grab a JPEG, print RTSP/RTMP/FLV URLs |
| Image & encoder | image, encode, osd | Flip/mirror, encoder settings per stream, on-screen name/time overlay |
| Lights | light | IR / night vision, spotlight (with blink), white-LED, status LED |
| Audio | audio | Volume, alarm mute, siren, quick replies, two-way talkback / TTS |
| PTZ | ptz | Pan / tilt / zoom, focus, presets, patrol, guard, autotrack, timed jog |
| Detection & events | detect, notify, events | Motion + AI detection, push settings, query/stream events, rule engine |
| Recording & storage | record, vod, storage, log | Recording schedule, VOD search & download, SD/HDD status, device logs |
| Privacy & users | privacy, users | Privacy-mask regions, manage device accounts |
| Network | wifi | Push a new SSID + PSK (pre-validated), auto-rediscover, update the registry |
| System | system | Reboot |
| Gateway & tooling | gateway, mcp-server, plugin, cache, self-update | Run the local gateway, expose MCP tools, maintain the skill cache, update the binaries |
/plugin marketplace add reolink/reolink-cli
/plugin install reolink-cli@reolink-cli
Install the CLI and gateway first with the command-line installer below, then install the plugin. The plugin provides the skill and MCP registration; it does not install the CLI binaries or start the gateway. Start the gateway separately, then just talk: “show me the front door camera”, “point the back-yard camera left”, “blink the porch spotlight 3 times”.
Codex, Cursor, Gemini, Copilot, OpenCode and 70+ others:
npx skills@latest add reolink/reolink-cli
Pick reolink-cli and the agents to install it into. npx skills installs the
skill files; it does not install the CLI binaries or start the gateway. Install
those separately with the command-line installer below.
Installs reolink-cli + reolink-gateway to ~/.local/bin (no sudo) and
initializes config:
# macOS / Linux
curl -fsSL https://raw.githubusercontent.com/reolink/reolink-cli/main/install.sh | sh
# Windows — works from PowerShell or the Command Prompt
powershell -NoProfile -Command "iwr https://raw.githubusercontent.com/reolink/reolink-cli/main/install.ps1 -UseBasicParsing | iex"
Both installers verify the download before installing anything — see Install and verify for exactly what they do.
Windows x64 requires the Microsoft Visual C++ runtime.
Upgrading: reolink-cli self-update --yes on macOS/Linux. On Windows,
re-run the installer (a running .exe cannot replace itself).
Grab the archive for your platform from the latest Release, verify it, extract, and run the bundled installer:
tar -xzf reolink-cli-*.tar.gz && cd reolink-cli-*/ && ./install.sh
# Windows: extract the .zip and run .\install.ps1
The archive is self-contained: binaries + the skill/plugin + installer +
THIRD-PARTY-LICENSES.txt.
reolink-cli setup --uninstall # add --purge to also delete config and the camera registry
npx skills remove reolink-cli # if you installed the skill with npx
Claude Code users: also run /plugin uninstall reolink-cli.
1. Start the gateway. Most commands go through a small local process that keeps camera sessions open, so repeated commands are fast. Leave it running in its own terminal (or under your service manager):
reolink-cli gateway start --addr 127.0.0.1:9000
2. Tell the CLI where it is — for this shell, or permanently by adding
gateway-addr = "127.0.0.1:9000" to config.toml (reolink-cli doctor prints
where that file lives):
export REOLINK_GATEWAY_ADDR=127.0.0.1:9000
Port 9000 already taken (Portainer, MinIO, …)? Use any free port in both places.
3. Find a camera, register it, use it:
reolink-cli discover # cameras on your LAN
reolink-cli device add porch --host 192.0.2.41 --user admin
reolink-cli --camera porch info
reolink-cli --camera porch snapshot --file ./porch.jpg
The interactive device add command prompts for the password without echoing
it. For non-interactive scripts, pipe exactly one password line to
--password-stdin and remove the variable afterwards:
printf '%s\n' "$DEVICE_PASSWORD" |
reolink-cli device add porch --host 192.0.2.41 --user admin --password-stdin
unset DEVICE_PASSWORD
device list also shows a few disabled example entries the installer wrote to
illustrate the file format — device remove <name> clears them.
Many cameras at once — credentials via the environment, never --password:
export REOLINK_PASSWORD='<device-password>'
reolink-cli --user admin device import
unset REOLINK_PASSWORD
preview play needs ffplay on PATH (or pass --player, or set
REOLINK_PLAYER).
Target selection stays explicit — there is no hidden “current device” state.
| Selector | Meaning |
|---|---|
--camera <name> | one registered device |
--cameras <a,b,c> | several registered devices |
--tag <tag> | every device carrying a tag |
--all-devices | the whole registry |
--host <ip[:port]> | an ad-hoc device by address |
reolink-cli device list
reolink-cli --tag outdoor device inventory --capabilities
reolink-cli --tag outdoor snapshot # fan out across a tag group
Print a camera's stream URLs, read from its real port configuration:
reolink-cli --camera porch stream url --kind rtsp,rtmp,flv --stream main,sub
Credentials come back as separate JSON fields. --with-auth embeds
user:password@ in the URL for players that need it — treat that output as a
password.
Two ways in, both driving the same runtime as the CLI:
For complete MCP setup, client configuration, target selection, security, and troubleshooting, see the MCP Guide.
The skill — natural language. It teaches the agent the command surface and the safety rules, so you say “point the driveway cam to preset 2, then take a snapshot” or “let me know if anyone shows up at the door tonight”. The agent never guesses device state — it only reports what a command returned.
The MCP server — typed tool calls for tight automation loops. The Claude Code plugin already registers it. For any other MCP client:
"mcpServers": {
"reolink-cli": {
"command": "reolink-cli",
"args": ["mcp-server"],
"env": { "REOLINK_GATEWAY_ADDR": "127.0.0.1:9000" }
}
}
JSON-RPC 2.0 over stdio; the gateway must be running, as for the CLI.
Prebuilt binaries on each Release:
| OS | Architectures |
|---|---|
| macOS | arm64 (Apple Silicon) |
| Linux (glibc) | x86_64, arm64 |
| Linux (musl, static) | x86_64, arm64 — Alpine, Home Assistant OS, slim Docker images |
| Linux 32-bit ARM | armv7 (Pi 2/3/4 on a 32-bit OS), armv6 (Pi 1 / Zero) — glibc 2.28+ |
| Windows | x86_64 |
The installers select the matching architecture and libc variant. For manual downloads, choose both values from the release asset name; see the Operator Guide for host-specific notes.
Use this tool only on cameras you own or are authorised to administer.
discover and ping are for locating your own devices, not for sweeping
networks you were not asked to work on. Snapshots, recordings and event history
written to disk are personal data — protect them like the camera's own storage,
and delete what you no longer need.
reolink-cli is a Claude Code plugin with 1 hand-picked skill, indexed on Flowy in the Cloud & Infrastructure category. Install it with the command on its page. It includes reolink-cli. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.
Is this plugin yours?
Claim it with GitHubSubmit a pluginPromote it