Reference
CLI Reference
Complete command-line reference for the Bleep headless protection service
On this page
Overview
The Bleep CLI is a headless Linux protection service that uses the same detection engine, policy evaluation, and CA infrastructure as the desktop app. It uses DNS redirect to intercept AI traffic — setting the system DNS to 127.0.0.1, spoofing AI domains to a local address, and intercepting TLS on port 443. No proxy settings are needed. It runs as a background daemon and is designed for environments where a GUI is unavailable or unnecessary.
Use the CLI when deploying Bleep on:
- Linux servers (bare metal or VM)
- Docker containers
- CI/CD runners (GitHub Actions, GitLab CI, Jenkins)
- Headless development environments
- Cloud workstations and remote machines
Two binaries
| Binary | Plan | Description |
|---|---|---|
| bleep | Individual | Standalone protection service with local policies and storage |
| bleep-enterprise | Team / Enterprise | Managed protection service that enrolls with an admin server for centralized policies and reporting |
Installation
Individual (curl)
Install directly from the command line — no browser needed. The exact URL with the latest version is shown on your downloads page under the Linux card.
# The URL follows this pattern (get exact URL from bleep-it.com/dashboard/downloads):
curl -fsSL -o /usr/local/bin/bleep \
"https://vlhkdtkmpbaqtvayrban.supabase.co/storage/v1/object/public/downloads/individual/VERSION/bleep-individual-linux-cli-VERSION"
chmod +x /usr/local/bin/bleep
# Verify
bleep --versionReplace VERSION with the latest version number, or copy the ready-to-use curl command from your downloads page.
Enterprise (curl)
For managed fleets, use the deployment script from your admin dashboard (Mass Deploy → Linux CLI), or install manually:
# Option 1: One-line install via curl (get exact URL from downloads page)
curl -fsSL -o /usr/local/bin/bleep-enterprise \
"https://vlhkdtkmpbaqtvayrban.supabase.co/storage/v1/object/public/downloads/VERSION/bleep-enterprise-linux-cli-VERSION"
chmod +x /usr/local/bin/bleep-enterprise
# Option 2: Admin dashboard deployment script (recommended for fleets)
# Go to Mass Deploy → Linux (CLI) tab → copy and run the generated script
# It downloads the binary, enrolls the device, installs the CA cert, and
# creates a systemd service — all in one step.
# Verify
bleep-enterprise --versionThe deployment script from the admin dashboard handles everything: downloading the binary, enrolling with the server, installing the CA certificate, creating a systemd service, and starting protection. Use it for deploying to multiple servers at once.
Quick Start
Individual
Run the interactive setup wizard, then start:
# Interactive setup (license, certificate, DNS redirect, mode)
sudo bleep setup
# Start protection
sudo systemctl start bleep # if systemd was configured
bleep start # or run directlyThe setup wizard runs automatically on first bleep start or bleep up. Skip with --no-setup for CI/Docker or --defaults for non-interactive mode.
Or quick-start without the wizard: BLEEP_LICENSE_KEY=LIC-XXXX bleep --no-setup up
Enterprise
Enroll with your admin server, then start protection:
# Enroll this device (one-time)
bleep-enterprise enroll --server http://admin-server:8081 --token YOUR_ENROLLMENT_TOKEN
# Start protection
bleep-enterprise upAfter enrollment, the device syncs policies, domain lists, and configuration from the admin server automatically. Violations are reported back to the admin dashboard.
Global Options
These options apply to all commands. They can also be set via environment variables or a YAML config file.
| Option | Default | Description |
|---|---|---|
| -c, --config PATH | — | Path to YAML config file |
| -m, --mode MODE | warning | Operating mode: warning or enforcing |
| -w, --web-port PORT | 8081 | Web dashboard / API port |
| -l, --license-key KEY | — | License key (env: BLEEP_LICENSE_KEY) |
| --data-dir PATH | ~/.local/share/bleep | Data directory (SQLite database, CA, logs) |
| -v, --verbose | — | Enable debug logging |
| --log-file PATH | — | Write logs to file instead of stdout |
| --json-events | — | Output violations as JSON lines (for SIEM integration) |
| --json-events-min-severity | — | Minimum severity for JSON events: MEDIUM, HIGH, or CRITICAL |
| --rebind | — | Force-move license from another device (use when license is bound elsewhere) |
| --no-setup | — | Skip interactive setup wizard on first run (for CI/Docker/systemd) |
Commands Reference
setup
Interactive setup wizard. Guides you through license, CA certificate trust, DNS redirect info, and protection mode. Auto-triggered on first start or up.
# Interactive setup (run as root for CA trust + DNS)
sudo bleep setup
# Non-interactive with all defaults (for CI/Docker)
bleep setup --defaults
# Enterprise variant
sudo bleep-enterprise setupSteps: License/Enrollment → CA Trust + System Env Vars → App Selection → Mode → Systemd Service. Re-run anytime to reconfigure. Skipped in non-TTY environments (pipes, cron).
start
Start the DNS redirect service. Sets system DNS to 127.0.0.1, intercepts AI traffic via DNS spoofing, and applies detection policies. Does not configure any applications — use up for auto-configuration.
bleep start
bleep start --mode warning
bleep start --log-file /var/log/bleep.logThe daemon runs in the foreground by default. Use a systemd service or & to background it.
up
Start the DNS redirect service and auto-configure common applications to trust the Bleep CA certificate. This is the recommended way to start Bleep on developer machines.
bleep up
bleep up --mode warning
BLEEP_LICENSE_KEY=LIC-XXXX bleep upAlias for start. Configures CA trust for git, npm, and other tools automatically on startup. Since Bleep uses DNS redirect, all applications are protected automatically without any per-app proxy configuration.
down
Stop the DNS redirect service. CA trust configuration persists across restarts.
bleep downstatus
Show protection status including running state, license info, CA certificate trust status, violation counts, and configured applications.
bleep status
bleep status --jsonUse --json for machine-readable output. See the Status Output section for a full example.
policy list
List all detection policies with their ID, name, action, severity, and enabled state.
bleep policy list
bleep policy list --jsonpolicy add
Add a new detection policy. Policies determine what action to take when a pattern is detected.
bleep policy add --name "Block AWS keys" --action block --severity critical
bleep policy add --name "Warn on emails" --action warn --severity medium --tags pii
bleep policy add --name "Redact SSNs" --action redact --severity high --destinations "ai_chatbots,ai_coding"| Flag | Required | Description |
|---|---|---|
| --name | Yes | Policy name |
| --action | Yes | log, warn, redact, or block |
| --severity | No | MEDIUM, HIGH, or CRITICAL |
| --tags | No | Comma-separated tags (e.g., pii,secrets) |
| --destinations | No | Comma-separated destination category IDs to apply to (default: all) |
policy remove
Remove a policy by ID.
bleep policy remove block_criticalpolicy toggle
Enable or disable a policy by ID without deleting it.
bleep policy toggle redact_highpattern list
List all built-in and custom detection patterns with their ID, name, category, severity, and enabled state.
bleep pattern list
bleep pattern list --jsonpattern add
Add a custom detection pattern. Supports two types: regex (single regular expression) and section (multi-field PII block detection).
# Regex pattern
bleep pattern add --id my_rule --name "My Rule" --regex "SECRET-\w+" --severity HIGH
# Section pattern (multi-field PII detection)
bleep pattern add --id customer --name "Customer PII" --pattern-type section \
--field "Name|Full Name:any_text" \
--field "ID:digits" \
--field "Phone:phone" \
--field "Email:email"| Flag | Required | Description |
|---|---|---|
| --id | Yes | Unique identifier for the pattern |
| --name | Yes | Human-readable name |
| --regex | Regex only | Regular expression to match (required for regex type, ignored for section) |
| --pattern-type | No | regex (default) or section |
| --field | Section only | Repeatable. Format: Label:value_type. Labels support alternation with | (e.g., Name|Full Name:any_text) |
| --category | No | Pattern category (default: custom) |
| --severity | No | Severity level (default: HIGH) |
| --tags | No | Comma-separated tags (e.g., internal,secrets) |
| --redaction-style | No | Per-pattern redaction: mask, type-label, or fixed |
Section field value types: any_text, digits, phone, email, date, custom_regex. For custom_regex, append the regex after a second colon: --field "Code:custom_regex:[A-Z]{2}[0-9]{5}"
Section patterns match per-line: any line matching a field label + value type is redacted individually. Pattern CRUD is Individual only. Enterprise endpoints receive patterns from the admin server.
pattern update
Update an existing custom pattern. Only the specified fields are changed — omitted fields remain unchanged. Works for both regex and section patterns.
bleep pattern update my_rule --name "Updated Rule Name"
bleep pattern update my_rule --regex "NEW_SECRET-\w+" --severity CRITICAL
bleep pattern update my_rule --enabled false
# Update section pattern fields
bleep pattern update customer --field "Name:any_text" --field "ID:digits" --field "SSN:digits"| Flag | Required | Description |
|---|---|---|
| --name | No | New human-readable name |
| --regex | No | New regular expression (regex patterns only) |
| --severity | No | MEDIUM, HIGH, or CRITICAL |
| --enabled | No | true or false |
| --pattern-type | No | Change pattern kind: regex or section |
| --field | No | Repeatable. Replaces all existing fields when given (section patterns only) |
| --redaction-style | No | mask, type-label, or fixed |
Pattern CRUD is Individual only. Enterprise endpoints receive patterns from the admin server.
pattern remove
Remove a custom pattern by ID.
bleep pattern remove my_rulepattern toggle
Enable or disable a pattern by ID without deleting it.
bleep pattern toggle my_ruledestination list
List all destination categories with their ID, description, risk level, and domain count.
bleep destination list
bleep destination list --jsondestination add
Add a custom destination category for grouping domains by risk level. Policies can target specific destination categories.
bleep destination add --id custom_ai --description "Custom AI Service" --risk-level high --domains "api.custom.com,chat.custom.com"| Flag | Required | Description |
|---|---|---|
| --id | Yes | Unique identifier for the destination category |
| --description | Yes | Human-readable description |
| --risk-level | Yes | low, medium, high, or critical |
| --domains | Yes | Comma-separated list of domains in this category |
Destination CRUD is Individual only. Enterprise endpoints receive destinations from the admin server.
destination update
Update an existing custom destination category. Only the specified fields are changed — omitted fields remain unchanged.
bleep destination update custom_ai --description "Updated AI Service"
bleep destination update custom_ai --risk-level critical --domains "api.new.com,chat.new.com"| Flag | Required | Description |
|---|---|---|
| --description | No | New human-readable description |
| --risk-level | No | low, medium, high, or critical |
| --domains | No | Comma-separated list of domains (replaces existing list) |
Destination CRUD is Individual only. Enterprise endpoints receive destinations from the admin server.
destination remove
Remove a custom destination category by ID.
bleep destination remove custom_aidestination toggle
Enable or disable a destination category by ID without deleting it.
bleep destination toggle custom_aiblocklist add
Add an item to the encrypted blocklist. Blocklist values are stored encrypted at rest and never displayed in plaintext.
bleep blocklist add --label "Production DB password" --value "s3cr3t!" --category password --severity CRITICAL
bleep blocklist add --label "Internal project name" --value "Project Falcon" --category custom
bleep blocklist add --label "DB Password" --value "secret" --redaction-style mask
bleep blocklist add --label "Project" --value "falcon" --redaction-style fixed --redaction-text "[CLASSIFIED]"| Flag | Required | Description |
|---|---|---|
| --label | Yes | Human-readable label for the item |
| --value | Yes | Secret value to detect (stored encrypted) |
| --category | No | Category (e.g., password, custom, pii) |
| --severity | No | MEDIUM, HIGH, or CRITICAL |
| --redaction-style | No | mask (show last 4 chars), fixed (replace with custom text), or type-label (replace with pattern name) |
| --redaction-text | No | Custom replacement text for fixed style (default: [REDACTED]) |
blocklist list
List all blocklist items. Shows labels and categories but never reveals the actual values.
bleep blocklist list
bleep blocklist list --jsonblocklist remove
Remove a blocklist item by ID.
bleep blocklist remove a1b2c3d4-...blocklist toggle
Enable or disable a blocklist item by ID.
bleep blocklist toggle a1b2c3d4-...stats
Show violation statistics: counts by severity, by pattern, by destination, and over time.
bleep stats
bleep stats --timeframe 24h
bleep stats --timeframe 7d --json| Flag | Required | Description |
|---|---|---|
| --timeframe | No | Time window for stats (e.g., 24h, 7d, 30d). Default: all time |
| --json | No | Output stats as JSON |
violations list
List recent violations with details including timestamp, severity, pattern, action taken, and destination.
bleep violations list
bleep violations list --json --severity HIGH --from 2026-03-01| Flag | Required | Description |
|---|---|---|
| --limit | No | Maximum number of results (default: 20) |
| --offset | No | Skip the first N results for pagination |
| --severity | No | Filter by severity: MEDIUM, HIGH, or CRITICAL |
| --action-filter | No | Filter by action taken: log, warn, redact, or block |
| --from | No | Start date filter (e.g., 2026-03-01) |
| --to | No | End date filter |
| --json | No | Output as JSON |
violations export
Export violations to a file in CSV or JSON format. Useful for compliance reporting and audits.
bleep violations export --output /tmp/violations.csv
bleep violations export --output /tmp/violations.json --format json| Flag | Required | Description |
|---|---|---|
| --output | Yes | Output file path |
| --format | No | csv or json (default: csv) |
| --severity | No | Filter by severity |
| --from | No | Start date filter |
| --to | No | End date filter |
violations count
Show a summary count of violations, optionally filtered by severity.
bleep violations count
bleep violations count --severity CRITICALconfig get / config set
Read or write configuration values. Changes take effect on next start.
# Operating mode
bleep config get mode
bleep config set mode enforcing
# Maximum request body size to scan (MB)
bleep config get scan-body-size
bleep config set scan-body-size 50
# App configuration (JSON object with boolean toggles)
bleep config get app-config
bleep config set app-config '{"docker":false,"pip":false}'| Key | Values | Description |
|---|---|---|
| mode | warning or enforcing | Operating mode (ceiling for policy actions) |
| scan-body-size | 1–100 (MB) | Maximum request body size to scan |
| app-config | JSON object | Boolean toggles for which applications to configure (git, npm, docker, pip, etc.) |
scan
Test-scan a string against all detection patterns without sending it through the DNS redirect service. Useful for testing policies and patterns.
bleep scan "My AWS key is AKIAIOSFODNN7EXAMPLE"
bleep scan "Call me at 555-123-4567, my SSN is 123-45-6789"Returns all matches with pattern name, severity, and the matched substring.
ca info
Show CA certificate details: subject, fingerprint, expiry, and whether it is trusted by the system.
bleep ca infoca export
Export the CA certificate to a PEM file. Useful for distributing the CA to other machines or adding to custom trust stores.
bleep ca export --output /tmp/bleep-ca.pemca trust
Install the Bleep CA certificate into the system trust store. Requires root/sudo.
sudo bleep ca trustca untrust
Remove the Bleep CA certificate from the system trust store. Requires root/sudo.
sudo bleep ca untrustenv
Print environment variables for CA certificate trust configuration. Use with eval to apply in the current shell.
# Apply CA trust env vars to current shell
eval $(bleep env)
# Write a persistent drop-in file for all users
sudo bleep env --install
# Creates /etc/profile.d/bleep-ca.sh
# Remove the drop-in file
sudo bleep env --uninstallThe --install flag writes /etc/profile.d/bleep-ca.sh so CA trust variables (like NODE_EXTRA_CA_CERTS, REQUESTS_CA_BUNDLE, etc.) are set for all login shells automatically.
diag
Generate a diagnostic report for troubleshooting. Collects protection status, configuration, CA info, DNS settings, recent logs, and system information into a plain text file.
bleep diag
bleep diag -o /tmp/bleep-diag.txtThe diagnostic bundle never includes sensitive data (blocklist values, license keys, or violation content). Send it to support when reporting issues.
update
Self-update from the download manifest. Downloads the latest Linux CLI binary, verifies it, and atomically replaces the current binary. Requires sudo when installed to /usr/local/bin.
# Check for update, download, and replace binary
sudo bleep update
# Only check if an update is available (don't download)
bleep update --check| Flag | Required | Description |
|---|---|---|
| --check | No | Only check if an update is available, don't download or install |
uninstall
Completely remove Bleep from the system. Stops the daemon, restores original DNS settings, unconfigures applications, removes the CA certificate from the trust store, removes the environment profile drop-in, disables the systemd service, and deletes the data directory and binary. Enterprise: also unenrolls from the admin server.
# Preview what will be removed (requires --yes to execute)
bleep uninstall
# Completely remove Bleep
sudo bleep uninstall --yes
# Remove but keep the data directory (~/.local/share/bleep)
sudo bleep uninstall --keep-data --yes| Flag | Required | Description |
|---|---|---|
| --yes | Yes | Confirm removal (without this flag, only shows what would be removed) |
| --keep-data | No | Preserve the data directory (SQLite database, CA certificates, logs) |
Enterprise-Only Commands
These commands are only available in the bleep-enterprise binary.
enroll
Enroll this device with a Bleep admin server. After enrollment, the device syncs policies, domain lists, and settings from the server. Violations are reported back to the admin dashboard.
bleep-enterprise enroll --server http://admin-server:8081 --token YOUR_ENROLLMENT_TOKEN| Flag | Required | Description |
|---|---|---|
| --server URL | Yes | Admin server URL (e.g., http://192.168.1.50:8081) |
| --token TOKEN | Yes | Enrollment token from the admin dashboard |
Enrollment is a one-time operation. The device stores the server URL and credentials locally. After enrollment, run bleep-enterprise up to start protection.
unenroll
Remove enrollment from this device. Stops syncing with the admin server and clears server credentials. The service will stop reporting violations.
bleep-enterprise unenrollShared commands available on Enterprise
The enterprise binary also supports these commands from the shared reference above:
config get/set— supportsapp-configandscan-body-sizekeys (mode is server-managed)violations list/violations export/violations count— with--severity,--from, and--tofilters
Silent enrollment
If an enrollment-pending.json file exists in the data directory at startup, the enterprise binary automatically enrolls using its contents without requiring manual enroll. This is used by the admin dashboard's mass deployment scripts to enroll devices unattended.
Systemd Service
Run Bleep as a systemd service for automatic startup and process management. The bleep setup wizard auto-generates and enables the service file. Manual setup below:
Service file
Create /etc/systemd/system/bleep.service (Individual) or /etc/systemd/system/bleep-enterprise.service:
[Unit]
Description=Bleep AI Data Loss Prevention
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
ExecStart=/usr/local/bin/bleep start
Environment=BLEEP_LICENSE_KEY=LIC-XXXX-XXXX-XXXX-XXXX
Environment=BLEEP_MODE=warning
Restart=on-failure
RestartSec=5
LimitNOFILE=65536
[Install]
WantedBy=multi-user.targetInstallation
# Copy the service file
sudo cp bleep.service /etc/systemd/system/
# Enable and start
sudo systemctl daemon-reload
sudo systemctl enable --now bleep
# Check status
sudo systemctl status bleep
# View logs
journalctl -u bleep -fFor Enterprise deployments, replace bleep with bleep-enterprise in the service file. Add Environment=BLEEP_SERVER_URL=http://admin:8081 if not already enrolled.
Docker Usage
Run Bleep in a Docker container for isolated deployments. Bleep uses DNS redirect to intercept AI traffic, so the container needs the NET_ADMIN capability and access to modify DNS settings.
Dockerfile
There is no pre-built Docker image. Build your own using the Dockerfile below, then run it:
FROM ubuntu:24.04
COPY bleep /usr/local/bin/bleep
RUN chmod +x /usr/local/bin/bleep && \
bleep ca trust
VOLUME /data
ENTRYPOINT ["bleep", "start"]Build and run
# Build the image (place the bleep binary in the same directory as the Dockerfile)
docker build -t bleep .
# Run it (NET_ADMIN needed for DNS redirect)
docker run -d \
--name bleep \
--cap-add NET_ADMIN \
-e BLEEP_LICENSE_KEY=LIC-XXXX-XXXX-XXXX-XXXX \
-e BLEEP_MODE=warning \
-v bleep-data:/data \
bleepSidecar pattern
Run Bleep as a sidecar next to your application. Since Bleep uses DNS redirect, configure the application container to use the Bleep container as its DNS server:
# In your application container, point DNS at the Bleep container:
# docker run --dns <bleep-container-ip> your-app
# Or in docker-compose, use the 'dns' directive.
# Ensure the app trusts the Bleep CA certificate:
# Set NODE_EXTRA_CA_CERTS=/path/to/bleep-ca.pem for Node.js appsEnvironment Variables
All CLI options can be set via environment variables. Environment variables take precedence over the config file but are overridden by explicit CLI flags.
| Variable | Default | Description |
|---|---|---|
| BLEEP_LICENSE_KEY | — | License key (required) |
| BLEEP_MODE | warning | Operating mode: warning or enforcing |
| BLEEP_SERVER_URL | — | Admin server URL (Enterprise only) |
Precedence order (highest to lowest): CLI flags → environment variables → config file → defaults.
CA certificate environment variables
When you run bleep env --install, these variables are written to /etc/profile.d/bleep-ca.sh so that common tools trust the Bleep CA certificate automatically. Since Bleep uses DNS redirect (not a proxy), these are the only environment variables needed.
| Variable | Tools |
|---|---|
| REQUESTS_CA_BUNDLE | Python requests, pip, conda, gcloud, az CLI |
| SSL_CERT_FILE | Go, Ruby, PHP, Terraform, kubectl |
| CURL_CA_BUNDLE | curl |
| AWS_CA_BUNDLE | AWS CLI |
| PIP_CERT | pip |
| CARGO_HTTP_CAINFO | Rust cargo |
Examples
Protect a CI/CD runner
Add Bleep to your CI pipeline to prevent secrets from leaking through AI-assisted coding tools:
# GitHub Actions example
- name: Install Bleep
run: |
# Get the exact URL from bleep-it.com/dashboard/downloads
curl -fsSL -o bleep \
"https://vlhkdtkmpbaqtvayrban.supabase.co/storage/v1/object/public/downloads/individual/VERSION/bleep-individual-linux-cli-VERSION"
chmod +x bleep
sudo mv bleep /usr/local/bin/
sudo bleep ca trust
- name: Start Bleep protection
run: |
bleep start --mode enforcing &
eval $(bleep env)
env:
BLEEP_LICENSE_KEY: ${{ secrets.BLEEP_LICENSE_KEY }}
- name: Run your build
run: npm run buildDeploy to a fleet of Linux servers (Enterprise)
Use your config management tool (Ansible, Puppet, Chef) or a simple script:
#!/bin/bash
# deploy-bleep.sh — run on each target server
# Install binary
# Get the exact URL from bleep-it.com/dashboard/downloads
curl -fsSL -o /usr/local/bin/bleep-enterprise \
"https://vlhkdtkmpbaqtvayrban.supabase.co/storage/v1/object/public/downloads/VERSION/bleep-enterprise-linux-cli-VERSION"
chmod +x /usr/local/bin/bleep-enterprise
# Trust CA
bleep-enterprise ca trust
# Enroll with admin server
bleep-enterprise enroll --server http://admin-server:8081 --token "$ENROLLMENT_TOKEN"
# Install systemd service
cat > /etc/systemd/system/bleep-enterprise.service <<EOF
[Unit]
Description=Bleep Enterprise AI DLP Protection
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
ExecStart=/usr/local/bin/bleep-enterprise start
Restart=on-failure
RestartSec=5
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable --now bleep-enterprise
# Set CA trust env vars for all users
bleep-enterprise env --installMonitor AI usage on a development server
Run in warning mode to observe what data developers are sending to AI services, without blocking anything:
# Start in warning mode — logs everything, blocks nothing
BLEEP_LICENSE_KEY=LIC-XXXX bleep start \
--mode warning \
--log-file /var/log/bleep.log
# Bleep uses DNS redirect — all AI traffic from the machine is
# automatically intercepted. No proxy configuration needed.Integrate with SIEM
Use --json-events to output violations as JSON lines, then pipe to your SIEM:
# Pipe to syslog
bleep start --json-events 2>&1 | jq -c . | logger -t bleep -p local0.warning
# Write to file for Splunk/Elastic forwarder
bleep start --json-events --log-file /var/log/bleep/events.jsonl
# Example JSON event:
# {"timestamp":"2026-03-23T14:30:00Z","severity":"critical","pattern":"aws_access_key",
# "action":"block","destination":"chat.openai.com","redacted_match":"AKIA***EXAMPLE"}License & Offline Behavior
Instance binding
Each license key is bound to the first device that activates it. If you try to use it on a different device, the CLI will refuse to start:
$ bleep start
ERROR License is bound to another device.
Bound to: {"hostname":"other-server","os":"linux"}
To move the license to this device, restart with --rebind:
BLEEP_LICENSE_KEY=... bleep --rebind startUse --rebind to force-move the license from the other device. The other device will lose access at its next validation check.
Offline support
Bleep caches the license locally after each successful validation. If the device goes offline, protection continues operating until the license's expires_at date passes. There is no arbitrary offline day limit — a paid license works offline for the entire subscription period.
The daemon re-validates every 5 minutes when online. If the license is revoked or the plan changes, a 24-hour grace period allows time to resolve the issue before protection is disabled.
Status Output
Running bleep status displays a summary of the protection state. Here is a full example with all fields explained:
Individual
$ bleep status
Protection: active (DNS redirect)
Mode: warning
License: active (individual)
CA cert: trusted (/home/user/.local/share/bleep/certs/ca.crt)
Patterns: 6 built-in, 2 blocklist
Violations: 12 (last 24h), 47 (total)
CA env: configured (/etc/profile.d/bleep-ca.sh)
Apps: git, npmEnterprise
$ bleep-enterprise status
Enrollment: enrolled (seat: dev-server-01)
Server: http://10.0.1.50:8081 (Connected)
Last sync: 15s ago
Mode: enforcing
Protection: active (DNS redirect)
CA cert: trusted (/root/.local/share/bleep-enterprise/certs/ca.crt)
Tier: Engineering
Blocklist: 3 items
Violations: 5 (last 24h), 23 (total)
CA env: configured (/etc/profile.d/bleep-ca.sh)
Apps: git, npmField descriptions
| Field | Description |
|---|---|
| Protection | DNS redirect service state (active/stopped) |
| Mode | Current operating mode (warning or enforcing) |
| License | License activation status and plan type |
| CA cert | CA certificate trust status and file path |
| Patterns | Count of built-in detection patterns and blocklist items |
| Violations | Violation counts for last 24 hours and total |
| CA env | Whether CA trust environment variables are configured and the drop-in file path |
| Apps | Applications configured to trust the Bleep CA certificate |
| Enterprise-only fields | |
| Enrollment | Enrollment status and device seat name |
| Server | Admin server URL and connection status |
| Last sync | Time since last successful sync with the admin server |
| Tier | Policy tier assigned to this device by the admin |
| Blocklist | Number of blocklist items synced from the server |
Use bleep status --json for machine-readable output with the same fields as a JSON object.