Managed Capabilities

Use nfltr manage to keep one browser-capable tunnel and its paired TCP sidecar alive on a machine, then stage Copilot, browser shells, HTTP apps, commands, log tails, raw TCP services, gRPC services, and embedded SSH shells from the dashboard as durable desired state.


What This Pattern Gives You

NeedPatternWhy it helps
One long-lived remote entry pointnfltr manageOne browser tunnel and one TCP sidecar stay up while the dashboard controls which workloads are mounted.
Dashboard-owned Copilot or AI sessionManaged capability copilot or aiThe dashboard can start, stop, restart, and reopen the same workload later.
Separate operator fallback shellManaged capability terminalYou can keep an AI surface and a manual shell under the same machine identity.
Persisted desired state while the machine is offlineDashboard-managed capabilitiesEdits survive disconnects and reconcile the next time the machine runs nfltr manage.
Recommended mental model

Treat nfltr manage as the local runtime and the dashboard as the control plane. The dashboard stores the intent. The machine decides whether it can actually run that intent and reports the result back.


1. Start The Runtime On The Machine

Run nfltr manage on the target machine and leave it running:

nfltr manage \
  --name dev-laptop \
  --api-key "$NFLTR_API_KEY" \
  --http-addr https://nfltr.xyz \
  --basic-auth review:secret

On nfltr.xyz, keep the explicit --http-addr https://nfltr.xyz in examples so the control-plane and share API base are obvious. The current defaults already request a share URL and keep the tunnel in verified mode.

--http-addr is only for dashboard/control-plane polling. Native connection hints shown in the dashboard are derived from --server, so operators get the public tcp-connect and ssh-proxy endpoint instead of an internal control-plane URL.


2. Open The Dashboard Catalog

  1. Sign in to the dashboard.
  2. Find the agent started with nfltr manage.
  3. Open Catalog.
  4. Use the Managed Capabilities section to save or edit desired state.

Each saved capability is polled by the runtime, mounted under /managed/<capability-id>/, and reported back to the dashboard with a runtime state.


3. Field Format

FieldWhat it meansExample
TypeKind of workload to launchcopilot, terminal, http
LabelDashboard display nameCopilot, Shell
TargetLocal URL, path, workspace, shell, or command/home/alice/repo, /bin/bash, http://localhost:3000
ConfigOptional comma-separated key=value pairsmode=chat, lines=200, cwd=/home/alice/repo
mode=chat, cwd=/home/alice/repo
timeout=120, max_input=1048576

4. Working Recipes

Copilot session

FieldValue
Typecopilot
LabelCopilot
Target/home/alice/repo
Configmode=chat

Use mode=terminal if you want a full terminal-style Copilot UI instead of the lighter chat surface.

Browser shell

FieldValue
Typeterminal
LabelShell
Target/bin/bash
Configleave blank

The current managed terminal runtime launches a local shell executable directly. It does not yet apply a dashboard cwd setting, so change directories after opening the shell.

Other useful surfaces

TypeTargetConfig
httphttp://localhost:3000optional
serve/srv/docsindex=index.html
tail/var/log/sysloglines=200
command/usr/local/bin/deploy-checktimeout=120, cwd=/home/alice/repo
ai/home/alice/repocommand=copilot, mode=chat

Native TCP service

FieldValue
Typetcp
LabelPostgres
Targetlocalhost:5432
Configpublic_port=15432

The dashboard shows the exact nfltr tcp-connect ... --server ... command once the runtime reports the service as running.

Managed gRPC service

FieldValue
Typegrpc
LabelGreeter API
Targetlocalhost:50051
Configpublic_port=50051

The dashboard shows both the nfltr tcp-connect command and a matching grpcurl -plaintext localhost:<port> hint.

Embedded SSH shell

FieldValue
Typeshell
LabelSSH Shell
Target/bin/bash
Configauthorized_keys=~/.ssh/authorized_keys

You can also use password=secret or no_auth=true. authorized_keys and host_key paths are resolved on the agent machine, so ~/.ssh/authorized_keys is expanded before NFLTR starts the embedded SSH server. The dashboard shows both tcp-connect and ssh-proxy commands for the running shell.


5. Supported Right Now

The current single-tunnel runtime can execute:

The dashboard still accepts these forward-compatible types, but the current runtime reports them as unsupported instead of launching them:


6. How Access Works

Browser-capable capabilities still use the normal browse path. The manage landing page lives at the normal browse root:

/browse/<agent-id>/

Each running managed capability gets its own mounted path:

/browse/<agent-id>/managed/<capability-id>/

The dashboard Open button uses that mounted path once the runtime reports it.

Managed native capabilities do not create a browser Open link. Instead, the dashboard row shows the connection hints you need for that workload:


7. Authentication And Share Behavior

That means the public share path can have two layers: share policy at the edge, then agent-side basic auth inside the manage runtime.


8. Runtime States

StateMeaning
plannedSaved and waiting for the runtime to finish reconciliation.
runningMounted successfully and ready to open.
stoppedStopped intentionally from the dashboard.
failedLaunch/build error on the target machine.
unsupportedAccepted by the dashboard, but not executable by the current runtime.

9. Troubleshooting

Start one runtime, manage many browser surfaces

Use the dashboard to stage Copilot, shells, HTTP apps, command UIs, and log tails behind one machine identity.

Open Dashboard Manage CLI →