Check the real host
One explicit action checks cloudflared, the canonical OS service, documented config candidates, and parsed routes including the catch-all.
Is cloudflared installed, current, and running on this host?
Stable · v0.6.1One explicit action checks cloudflared, the canonical OS service, documented config candidates, and parsed routes including the catch-all.
A separate explicit action checks the official latest release and keeps download or update commands user-owned.
Start, Stop, and Restart require confirmation, a fresh expected state, post-action verification, and OS-owned elevation.
Review hostname, regex path, and origin YAML in the browser; local files and Cloudflare account configuration stay unchanged.
ProtoPeek’s Cloudflare Tunnel workspace gives a local machine one clear operations view without creating another repository, daemon, or dashboard. It reads the real Cloudflare primitives already on that host—cloudflared, the canonical operating-system service, and documented YAML locations—and keeps the evidence beside ProtoPeek’s existing HTTP, gRPC, network, and machine tools: the HTTP workbench, gRPC workbench, network workbench, and This Device.
This page describes the local operations available in v0.6.1. ProtoPeek is not affiliated with or endorsed by Cloudflare, Inc., and this guide does not make pricing or plan-limit claims.
Open Publish and enter the domain-native Cloudflare Tunnel workspace, or choose its task on Home, then select Inspect this host. No host inspection, Internet release check, service action, or background poll begins on page load. The product path always uses the running host adapter; it does not substitute demo deployments or fixture data. Test-only fakes remain isolated to automated tests.
One explicit inspection can show:
cloudflared is available and its bounded --version result;cloudflared service known to systemd, launchd, or Windows Service Control Manager;--config or credential-source flag;An empty result is useful real evidence. If cloudflared, the canonical service, Wrangler, or Docker is absent, ProtoPeek says so and offers the next relevant official link instead of inventing a deployment.
The shortest user journey is:
cloudflared is missing, review an official download link or copy the matching OS installcommand; ProtoPeek does not run it.
Refresh first if the service is transitional or its state is unknown.
The deployment list, filter, detail tabs, config evidence, tool diagnostics, and responsive mobile pane are all part of this local split-console workflow. Route rows for HTTP and gRPC services can hand off to ProtoPeek’s existing HTTP workbench and gRPC workbench.
ProtoPeek does not pretend every YAML file it finds is active. An explicit --config argument in the canonical service definition identifies the authoritative candidate; existence, readability, regular-file status, and YAML validity remain separate evidence. Without an explicit path, a locally managed canonical service selects only its fixed service-manager default source. With no canonical service, the first readable documented candidate can be shown as effective without being claimed as service-bound.
The bounded candidates are:
.cloudflared/config.yml and .cloudflared/config.yaml on every supported platform;%SystemRoot%\System32\config\systemprofile\.cloudflared\config.yml or config.yaml on Windows only when the canonical system service exists without an explicit --config;/etc/cloudflared/config.yml and /etc/cloudflared/config.yaml on Linux and macOS; and/usr/local/etc/cloudflared/config.yml and /usr/local/etc/cloudflared/config.yaml on Linux and macOS.On Windows, service arguments are read through the native Service Control Manager path. ProtoPeek does not crawl user profiles or guess an unrelated service account directory.
Each candidate is capped at 256 KiB and 256 ingress rules. Symlinks are reported but not followed. Unreadable, oversized, non-regular, or invalid YAML remains visible as evidence rather than being silently skipped.
A service started with a remotely managed tunnel token is different: Cloudflare account remains the configuration authority, and ProtoPeek does not select a local YAML destination for it. Any route draft opened for that deployment is only a browser proposal; current source cannot read or write its remote ingress configuration.
Cloudflare path values are regular expressions, not shell-style globs. For example, use a shape such as ^/api/.*, not /api/*. Current source performs only structural browser checks on a draft; authoritative cloudflared tunnel ingress validate and route matching remain planned. A config source’s parsed routes count includes the required final catch-all. Any separate hostname-route summary excludes that catch-all and reports its presence beside the count.
ProtoPeek manages only Cloudflare’s canonical service identity. It does not accept a service name, executable, argument list, or shell command from the browser.
| Host | Canonical evidence | Start, stop, and restart | If elevation is required |
|---|---|---|---|
| Windows | Windows Service Control Manager service Cloudflared; state, PID, and the safely parsed ImagePath are read with query-only access | A confirmed action targets that SCM service only | Open PowerShell as Administrator and use the exact copyable Start-Service, Stop-Service, or Restart-Service guidance; any PIN or password goes only to Windows |
| Linux | systemd unit cloudflared.service; LoadState, active/sub-state, PID, unit path, and a conservatively parsed ExecStart | A confirmed action targets that unit only | Use the exact copyable sudo systemctl … cloudflared.service guidance; sudo reads the password in the terminal |
| macOS | launchd label com.cloudflare.cloudflared; system LaunchDaemon first, then the current user’s LaunchAgent | A confirmed action targets the detected launchd definition only | A protected LaunchDaemon uses the exact copyable administrator command; macOS reads the password in the terminal |
When direct control is denied, the UI builds a command for the exact detected target. These are the canonical command shapes it exposes:
| Host | Start | Stop | Restart |
|---|---|---|---|
| Windows Administrator PowerShell | Start-Service -Name Cloudflared | Stop-Service -Name Cloudflared | Restart-Service -Name Cloudflared |
| Linux terminal | sudo systemctl start cloudflared.service | sudo systemctl stop cloudflared.service | sudo systemctl restart cloudflared.service |
| macOS system LaunchDaemon | sudo /bin/launchctl bootstrap system '/Library/LaunchDaemons/com.cloudflare.cloudflared.plist' | sudo /bin/launchctl bootout system/com.cloudflare.cloudflared | sudo /bin/launchctl kickstart -k system/com.cloudflare.cloudflared |
For a macOS user LaunchAgent, the same bootstrap, bootout, and kickstart -k operations use the detected gui/<UID> domain, the user plist path, and normally no sudo. Copy the concrete command shown by ProtoPeek instead of substituting a guessed UID or path.
The Start, Stop, and Restart controls remain unavailable until an explicit inspection proves that the canonical service exists. A missing service leads to setup documentation, not a mutation attempt.
Every action shows its effect and requires confirmation. The request carries the state observed by the browser; ProtoPeek re-reads the canonical service immediately before acting and refuses a stale request when the state changed. It then observes the service again and reports success only when the expected post-action state matches. Start on an already running service and stop on an already stopped service are harmless, explicitly reported no-ops.
Unknown, starting, and stopping states are not actionable. Start is accepted only from stopped; Stop from running or paused; and Restart from running, stopped, or paused. Refresh after a transition or incomplete observation instead of forcing an ambiguous operation.
ProtoPeek never renders a sudo, administrator, UAC, Keychain, or system-password field. It never receives, proxies, logs, or stores an operating-system password. When the current process lacks the required service permission, the UI reports Elevation required and shows bounded guidance for the operating system; it does not retry with captured credentials or run an arbitrary shell.
Inspect this host reads the installed executable path and bounded cloudflared --version output locally. It does not imply that an executable is installed merely because a service or YAML file exists.
Check latest version is a separate, explicit Internet action. It reads Cloudflare’s official latest GitHub release metadata, compares it with the detected local version, and reports the check time, release time, and whether the local version is current, has an update available, is outside Cloudflare’s one-year support window, or cannot be compared safely. ProtoPeek does not perform this request on page load or in the background. As verified on 2026-09-02, the latest release was `2026.8.3`; use the explicit check for the answer at the time you run ProtoPeek.
Installation and update remain user-owned. ProtoPeek links to the official download and release pages and can copy suitable commands, but it never downloads, installs, upgrades, or restarts cloudflared automatically.
| Host | Installation/download guidance | Useful verification/service command |
|---|---|---|
| Windows | Copy winget install --id Cloudflare.cloudflared, or use the 32/64-bit executable or MSI on Cloudflare Downloads; GitHub Releases lists assets and checksums | Run cloudflared.exe --version; install a prepared tunnel service from an Administrator Command Prompt with Cloudflare’s documented cloudflared.exe service install flow |
| Linux | After adding the Cloudflare Package Repository, copy sudo apt-get update && sudo apt-get install cloudflared or sudo dnf install cloudflared; Homebrew users can copy brew install cloudflared; direct binaries, .deb, and .rpm files are on Cloudflare Downloads | Verify with cloudflared --version, then follow Cloudflare’s documented sudo cloudflared service install flow |
| macOS | Install with brew install cloudflared, or select the Darwin architecture from Cloudflare Downloads | Run cloudflared --version; cloudflared service install creates a login agent, while sudo cloudflared service install creates a boot daemon |
Package-manager channels, especially community-maintained manifests, can lag the upstream release. Run Inspect this host and then Check latest version after installation instead of assuming the package channel installed Cloudflare’s newest build.
On Linux, sudo can change $HOME. If the local config is under a normal user’s home directory, use Cloudflare’s documented explicit form rather than assuming root will find it:
sudo cloudflared --config /home/<USER>/.cloudflared/config.yml service install
Review and replace every placeholder yourself; ProtoPeek does not execute or silently interpolate this command.
Updating can interrupt traffic and must use the same installation mechanism: package-manager installs are updated with that package manager, while eligible binary installs can use cloudflared update. See Update cloudflared before changing a production connector.
Credential contents never enter the API response or browser. A literal --token value is consumed only to identify that a token flag exists and is reported as redacted. Credential-file paths may be shown because they explain configuration authority, but the files are never opened. Userinfo and sensitive token, secret, key, or auth query values in ingress service URLs are redacted.
The current boundary permits only narrowly scoped canonical-service control:
This boundary allows the UI and evidence model to become useful before wider privileged file and cloud mutations are earned.
Wrangler is an optional diagnostic signal, not the foundation. ProtoPeek reports whether the CLI is present and its version, but does not inspect Wrangler’s login state or reuse its stored credentials. The stable primitives remain cloudflared, native service APIs, explicit local files, and—only in a later opt-in phase—the Cloudflare REST API.
That split avoids coupling tunnel operations to an experimental developer-project workflow while leaving room for a future Wrangler adapter.
The implementation plan separates further capability growth by risk:
cloudflared validation and route matching,bounded logs and metrics, and a local Doctor report.
and receipts are complete on each operating system.
Platform adapter tests exercise Windows, Linux, and macOS command/state behavior. The real Windows host checked on 2026-09-02 proved the all-absent path and an isolated cloudflared 2026.8.3 binary proved version and config-command shapes. That host had no canonical service, so real start/stop/restart and UAC behavior were not exercised; installed-service permission and transition smokes on Windows, Linux, and macOS remain release criteria rather than completed GA evidence.
cloudflared, service, YAML, Wrangler, or Docker on the machine, inspection renders a truthful empty state and official install guidance—never a sample deployment.cloudflare/cloudflared page or copies a reviewable command. No action installs or updates software automatically.^/api/.*, and remains browser-only; config bytes do not change. A remote-managed draft has Cloudflare account authority and no local YAML destination.The full architecture, threat model, endpoint plan, GitHub milestones, test matrix, launch plan, and search strategy are in the Cloudflare Tunnel integration plan.