terminal
cmdhub adapter

Signal CLI
for cmdhub.

Signal resources through the cmdhub CLI.

lock Auth: Device link
Quick Install cmdhub get signal

data_object Agent Contract

Agents should start with auth/status and discovery commands, inspect schemas before composition, and treat commands marked as mutating as state-changing operations.

Output

Use human output for reading, `--json` for one object, and `--jsonl` for pipes.

Auth

Device link

Refs

Prefer list/search, then short refs or piped JSONL. Use `resolve` to inspect cached refs.

Schemas

Use `signal schema` and `catalog.json` to inspect fields, flags, examples, and side effects.

terminal Command Reference

Generated from source. Global flags apply to all commands.

Global Flags

--json bool Emit one JSON payload where supported
--jsonl bool Emit newline-delimited JSON where supported
--output string Output mode: human|json
--quiet bool Suppress human next-step guidance
--store path Path to the local Signal state database
--view string Human view: summary|full
signal login Link this CLI as a Signal secondary device
#cmd-signal-login mutates state
--device-name string Device name shown in Signal mobile
--timeout duration How long to wait for phone approval
--show-url bool Print the raw provisioning URL
--servers string Signal server set: production|staging
$ signal login
$ signal login --device-name laptop
signal auth auth commands
#cmd-signal-auth discovery safe
signal auth login Link this CLI as a Signal secondary device
#cmd-signal-auth-login mutates state
--device-name string Device name shown in Signal mobile
--timeout duration How long to wait for phone approval
--show-url bool Print the raw provisioning URL
--servers string Signal server set: production|staging
$ signal auth login
signal auth status Show the linked Signal identity
#cmd-signal-auth-status discovery safe
$ signal auth status
signal auth whoami Show the linked Signal identity
#cmd-signal-auth-whoami discovery safe
$ signal auth whoami
signal auth logout Remove the local linked-device database
#cmd-signal-auth-logout mutates state
--yes bool Delete local state without confirmation
$ signal auth logout --yes
signal status Show the linked Signal identity
#cmd-signal-status discovery safe
$ signal status
signal whoami Show the linked Signal identity
#cmd-signal-whoami discovery safe
$ signal whoami
signal logout Remove the local linked-device database
#cmd-signal-logout mutates state
--yes bool Delete local state without confirmation
$ signal logout --yes
signal profile profile commands
#cmd-signal-profile discovery safe
signal profile list Explain the fixed linked-device profile
#cmd-signal-profile-list discovery safe
$ signal profile list
signal profile create Report that Signal profile creation is unsupported
#cmd-signal-profile-create mutates state
--name string Requested profile name
$ signal profile create --name cmdhub-eval-temp
signal profile delete Report that Signal profile deletion is unsupported
#cmd-signal-profile-delete mutates state
--yes bool Acknowledge the cleanup check
$ signal profile delete cmdhub-eval-temp
signal sync Receive and store pending messages
#cmd-signal-sync discovery safe
--once bool Exit once the current server queue is empty
$ signal sync --once
signal contact contact commands
#cmd-signal-contact discovery safe
signal contact list List synced contacts
#cmd-signal-contact-list discovery safe
$ signal contact list
signal group group commands
#cmd-signal-group discovery safe
signal group list List synced groups
#cmd-signal-group-list discovery safe
--verbose bool Show more group metadata
$ signal group list
$ signal group list --verbose
signal message message commands
#cmd-signal-message discovery safe
signal message list List local messages for a contact or group
#cmd-signal-message-list discovery safe
--contact string Contact ref, ACI UUID, or service ID
--group string Group ref or group master key
--from int Local message offset
$ signal message list --contact c1
$ signal message list --group g1
signal message get Hidden alias for exact message lookup
#cmd-signal-message-get discovery safe
$ signal message get m1
$ signal resolve m1
signal message send Send a message to a contact or group
#cmd-signal-message-send mutates state
--to string Recipient contact ref or ACI UUID
--group string Group ref or group master key
--message string Message body
--attach path Attachment path; repeatable
$ signal message send --to c1 --message hello
$ signal message send --group g1 --message hello
signal message delete Delete one local synced message by ref
#cmd-signal-message-delete mutates state dry-run
--yes bool Confirm local deletion for non-disposable messages
--dry-run bool Preview local deletion without changing the store
$ signal message delete m1 --yes
signal device device commands
#cmd-signal-device discovery safe
signal device list List linked devices
#cmd-signal-device-list discovery safe
$ signal device list
signal doctor Run local Signal CLI diagnostics
#cmd-signal-doctor discovery safe
$ signal doctor
$ signal doctor --json
signal capabilities Describe command capabilities for automation and audits
#cmd-signal-capabilities discovery safe
$ signal capabilities --json
signal schema Print command input and output schemas
#cmd-signal-schema discovery safe
--input bool Show input schema for one command
--out bool Show output schema for one command
$ signal schema --json
$ signal schema auth.status --out --json
signal resolve Resolve a local ref to its canonical provider value
#cmd-signal-resolve discovery safe
$ signal resolve c1
$ signal resolve aci1
$ signal resolve me1 --json
signal version Print build and license information
#cmd-signal-version discovery safe
$ signal version

play_circle Live Examples

Output captured from a real workspace. Regenerate with scripts/gen-docs.sh --update.

auth

Inspect linked-device status
$ signal status
Signal auth status
Linked: no
Profile: default
Credential type: linked-device QR store
Store: {store}
Status: not linked yet

Next steps:
- Link this CLI: signal login
- Inspect auth state: signal auth status
- Run diagnostics: signal doctor

diagnostics

Check local Signal readiness
$ signal doctor
signal doctor
status: needs_login
store: {store}
checks:
- credential_backend: ok - local SQLite linked-device store
- auth: missing - not linked yet; expected store at {store}
- connectivity: skipped - link this CLI before checking Signal service connectivity

Next steps:
- Link this CLI: signal login
- Inspect auth state: signal auth status
- Run diagnostics: signal doctor
Print version
$ signal version
signal 0.1.0
license: AGPL-3.0-only
engine: presage/libsignal-service

Next steps:
- Check linked-device status: signal auth status
- Inspect command contract: signal capabilities --json
- Run diagnostics: signal doctor

schemas

Inspect command capabilities
$ signal capabilities
signal capabilities
Focused Signal linked-device CLI for login, auth recovery, contacts, groups, local messages, sends, local message cleanup, and device inspection.
auth: device_link (linked-device QR)
machine contract: signal capabilities --json
commands:
  signal login	auth	Run `signal login` to link this CLI as a secondary device.
  signal auth login	auth	Run `signal auth login` to link this CLI as a secondary device.
  signal status	read_only	Run `signal login` first if no linked device is configured.
  signal whoami	read_only	Run `signal login` first if no linked device is configured.
  signal auth status	read_only	Run `signal login` first if no linked device is configured.
  signal auth whoami	read_only	Run `signal login` first if no linked device is configured.
  signal logout	destructive	Run `signal logout --yes` only when you want to remove local linked-device state.
  signal auth logout	destructive	Run `signal auth logout --yes` only when you want to remove local linked-device state.
  signal profile list	read_only	Signal has one fixed linked-device profile; use `signal auth status` for identity.
  signal profile create	unsupported_noop	Run `signal profile create --name cmdhub-eval-temp` to get a no-change auth redirect.
  signal profile delete	unsupported_noop	Run `signal profile delete cmdhub-eval-temp` to verify no local profile cleanup is needed.
  signal sync	read_only	Run `signal sync --once` to receive and store pending messages.
  signal contact list	read_only	Run `signal contact list` after `signal sync --once` to list synced contacts.
  signal group list	read_only	Run `signal group list --verbose` for more local group metadata.
  signal message list	read_only	Run `signal message list --contact c1` or `signal message list --group g1`.
  signal message get	read_only	Alias: `signal message get m1` runs `signal resolve m1`.
  signal message send	mutating	Run `signal message send --to c1 --message <text>` or `signal message send --group g1 --message <text>`.
  signal message delete	destructive	Run `signal message delete m1 --yes` for confirmed local-only cleanup; disposable cmdhub-eval messages can be deleted without --yes.
  signal device list	read_only	Run `signal device list` to list linked devices for the account.
  signal doctor	read_only	Run `signal doctor` to check local store and linked-device readiness.
  signal capabilities	read_only	Run `signal capabilities --json` for the structured command contract.
  signal schema	read_only	Run `signal schema --json` for all command schemas.
  signal resolve	read_only	Run `signal resolve c1` after `signal contact list` or `signal resolve aci1` after `signal auth status`.
  signal version	read_only	Run `signal version` to show build and license information.
Run `signal capabilities --json` for the structured command contract.

Next steps:
- Check linked-device status: signal auth status
- Inspect schemas: signal schema --json
- Run diagnostics: signal doctor
Inspect auth status schema
$ signal schema auth.status --out --json
{
  "tool": "signal",
  "version": "0.1.0",
  "schemas": [
    {
      "schema_id": "signal.auth.status.output.v1",
      "version": "1",
      "tool": "signal",
      "resource": "auth",
      "action": "status",
      "direction": "output",
      "json_schema": {
        "additionalProperties": false,
        "properties": {
          "command": {
            "description": "Signal command field",
            "type": [
              "string",
              "boolean",
              "integer",
              "array",
              "object",
              "null"
            ]
          },
          "items": {
            "description": "Signal items field",
            "type": [
              "string",
              "boolean",
              "integer",
              "array",
              "object",
              "null"
            ]
          },
          "next_steps": {
            "description": "Signal next_steps field",
            "type": [
              "string",
              "boolean",
              "integer",
              "array",
              "object",
              "null"
            ]
          },
          "result": {
            "description": "Signal result field",
            "type": [
              "string",
              "boolean",
              "integer",
              "array",
              "object",
              "null"
            ]
          },
          "tool": {
            "description": "Signal tool field",
            "type": [
              "string",
              "boolean",
              "integer",
              "array",
              "object",
              "null"
            ]
          }
        },
        "required": [
          "tool",
          "command"
        ],
        "type": "object"
      },
      "required": [
        "tool",
        "command"
      ],
      "optional": [
        "items",
        "result",
        "next_steps"
      ],
      "examples": [
        "signal auth status",
        "signal auth status --json"
      ]
    }
  ],
  "next_steps": [
    {
      "label": "Inspect auth status schema",
      "command": "signal schema auth.status --out --json",
      "safety": "read_only"
    },
    {
      "label": "Inspect command contract",
      "command": "signal capabilities --json",
      "safety": "read_only"
    }
  ]
}

messages

Send with a ref
$ signal message send --help
Send a message to a contact or group

Usage: signal message send [OPTIONS] --message <MESSAGE>

Options:
      --json                  Emit one JSON payload where supported
      --to <TO>               Recipient contact ref or ACI UUID
      --group <GROUP>         Group ref or group master key hex
      --jsonl                 Emit newline-delimited JSON where supported
  -m, --message <MESSAGE>     
      --view <VIEW>           [default: summary] [possible values: summary, full]
      --attach <ATTACHMENTS>  Path to an attachment; repeat for more than one
      --quiet                 Suppress human next-step guidance
      --limit <LIMIT>         Limit list output where supported; 0 means no cap
      --store <STORE_PATH>    Path to the local Signal state database
  -h, --help                  Print help
  -V, --version               Print version

alt_route Composition Patterns

Bridge your ecosystem with zero middleware.

# Inspect auth state and available command schemas
signal auth status --json
signal schema