signadot-local — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited signadot-local (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Help the user connect their local machine to a Kubernetes cluster, run workloads locally that participate in cluster traffic, override sandbox traffic, and record/inspect traffic. If the user specifies a command ($ARGUMENTS), focus on that section.
Important: This skill covers two separate CLI subcommands:
signadot local — connect, proxy, override, status, disconnectsignadot traffic — record and inspect sandbox traffic (does NOT require signadot local connect)For traffic recording/inspection, go directly to signadot traffic record or signadot traffic inspect. Do not use signadot local for traffic operations.
Signadot local development enables developers to:
signadot auth status)~/.signadot/config.yaml (for local connect). Use --config to switch between config files:local:
connections:
- cluster: <cluster-name> # from Signadot dashboard
kubeContext: <kube-context> # from your kubeconfig# Use a specific config for a different cluster/org
signadot --config ~/configs/staging.yaml local connect --cluster stagingConfigure in ~/.signadot/config.yaml under each connection:
kubeContext.type: ControlPlaneProxy.type: ProxyAddress and proxyAddress: <host>:<port>.# ControlPlaneProxy — simplest setup, no kubectl required
local:
connections:
- cluster: staging
type: ControlPlaneProxyEstablishes bidirectional network connectivity between your machine and the cluster. Requires root privileges.
sudo signadot local connect --cluster <cluster-name>This will:
/etc/hosts with cluster service DNS namesOnce connected, your local code can resolve and call cluster services by their Kubernetes DNS names (e.g. my-service.my-namespace.svc).
signadot local connect --cluster <cluster-name> --unprivilegedLimited functionality: no /etc/hosts updates or system networking changes.
Shows current connection status, active sandboxes, and health:
signadot local status
signadot local status -o json
signadot local status -o yamlTears down the cluster connection:
# Keep sandbox configurations
signadot local disconnect
# Also remove all local sandbox configurations
signadot local disconnect --clean-local-sandboxesAfter connecting, create a sandbox with local mappings to route cluster traffic to your local service:
# local-sandbox.yaml
name: my-local-dev
spec:
cluster: staging
description: "Local dev for my-service"
local:
- name: local-my-service
from:
kind: Deployment
namespace: my-namespace
name: my-service
mappings:
- port: 8080
toLocal: localhost:3000signadot sandbox apply -f local-sandbox.yamlGet the environment variables and config files your local service needs to match the cluster workload:
# Print environment variables (can be eval'd)
signadot sandbox get-env my-local-dev
# Example output:
# export MYSQL_HOST="localhost"
# export MYSQL_PORT="3306"
# export DEBUG="true"
# Extract config files
signadot sandbox get-files my-local-dev
# Files are saved under ~/.signadot/sandboxes/<name>/local/files/# 1. Connect to cluster
sudo signadot local connect --cluster staging
# 2. Create sandbox with local mapping
signadot sandbox apply -f local-sandbox.yaml
# 3. Get environment for your local service
eval $(signadot sandbox get-env my-local-dev)
# 4. Get config files
signadot sandbox get-files my-local-dev
# 5. Run your service locally
go run ./cmd/server --port 3000
# 6. Test via preview URL or cluster traffic
# Your local service now receives traffic routed to the sandbox
# 7. Clean up
signadot sandbox delete my-local-dev
signadot local disconnectProxy cluster services to local ports. Similar to kubectl port-forward but with Signadot routing key injection.
signadot local proxy --sandbox <name> --map <remote>@<local>
signadot local proxy --routegroup <name> --map <remote>@<local>
signadot local proxy --cluster <name> --map <remote>@<local>--map <scheme>://<host>:<port>@<host>:<port>http, grpc, tcp (tcp has no header/routing key injection)# Proxy a sandbox service to localhost:8001
signadot local proxy --sandbox feature-x \
--map http://backend.staging.svc:8000@localhost:8001
# Use in a test script
export BACKEND=localhost:8001
signadot local proxy --sandbox feature-x \
--map http://backend.staging.svc:8000@$BACKEND &
pid=$!
# Run tests against localhost:8001
npm test
kill $pid
# Proxy a route group
signadot local proxy --routegroup my-rg \
--map http://frontend.hotrod.svc:8080@localhost:9090
# Proxy without routing key injection (raw TCP)
signadot local proxy --cluster staging \
--map tcp://postgres.db.svc:5432@localhost:5432Intercept HTTP/gRPC traffic destined for a sandbox workload and route it to a local service. Requires CLI v1.3.0+ and Operator v1.2.0+.
signadot local override \
--sandbox <sandbox> \
--workload <workload-name> \
--workload-port <port> \
--with <local-address>sd-override: true (HTTP) or metadata key sd-override: true (gRPC), that response is sent back to the client — the request never reaches the sandbox workloadsd-override: true is absent, the request falls through to the original sandbox workloadOverride all traffic EXCEPT when your local service returns specific status codes:
signadot local override \
--sandbox my-sandbox \
--workload my-workload \
--workload-port 8080 \
--with localhost:9999 \
--except-status 404,503With --except-status, your local service handles everything by default. Only when it returns one of the listed status codes does the request fall through to the sandbox workload.
Keep the override active after the CLI exits:
signadot local override \
--sandbox my-sandbox \
--workload my-workload \
--workload-port 8080 \
--with localhost:9999 \
--detach# List active overrides
signadot local override list
# Delete a specific override
signadot local override delete <name> --sandbox <sandbox>Virtual workloads are zero-cost placeholders that point to baseline. Combined with local override, you can record baseline traffic at near-zero cost:
spec:
virtual:
- name: my-virtual
workload:
kind: Deployment
namespace: my-ns
name: my-serviceRecord HTTP/gRPC request/response traffic flowing through a sandbox. Requires CLI v1.3.0+ and Operator v1.2.0+.
signadot traffic record --sandbox <sandbox-name>--inspect — launch interactive TUI instead of log output--clean — erase previously recorded traffic before recording--out-dir <dir> — custom output directory--short --to-file <file> — record only the activity log (no request/response bodies)trafficwatch middleware to the sandbox--clean to start fresh)Each request/response pair produces:
middlewareRequestID containing:meta.json — request metadatarequest — HTTP wire format (protocol line, headers, body)response — HTTP wire format# Record traffic with live TUI
signadot traffic record --sandbox my-sandbox --inspect
# Record to a clean directory
signadot traffic record --sandbox my-sandbox --clean --out-dir ./traffic-data
# Record activity log only
signadot traffic record --sandbox my-sandbox --short --to-file ./activity.jsonBrowse previously recorded traffic in an interactive TUI:
signadot traffic inspectWorks with traffic recorded by signadot traffic record.
If your cluster is behind a VPN using a non-en0 interface, add to ~/.signadot/config.yaml:
local:
connections:
- cluster: my-cluster
outbound:
macOSVPNInterface: utun6 # find with ifconfigsignadot local connect needs root. Use sudo.signadot local status for connection health. Verify /etc/hosts was updated.signadot sandbox get <name> for sandbox status.--with address. Check signadot local override list.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.