Didactyl - sovereign Nostr agent

Usage:
  ./didactyl [options]

Options:
  -h, --help
      Show this help text and exit.
  -v, --version
      Show version and exit.
  --config <path>
      Path to config/genesis JSONC file (default: ./genesis.jsonc).
      If file is missing, startup falls back to minimal nsec-only mode.
  --nsec <nsec_or_hex>
      Private key as nsec1... or 64-char hex; overrides DIDACTYL_NSEC.
  --admin <npub_or_hex>
      Administrator pubkey override; accepts npub1... or 64-char hex.
  --api-port <port>
      Enable HTTP API and bind to this port (1-65535).
  --api-bind <addr>
      Enable HTTP API and bind address (example: 127.0.0.1).
  --debug <0-5>
      Log level (0=fatal, 1=error, 2=warn, 3=info, 4=debug, 5=trace).
  --signer <mode>
      Signer provider: local | nsigner_unix | nsigner_tcp.
      Overrides signer.mode in config and DIDACTYL_SIGNER.
      In nsigner_* modes --nsec/DIDACTYL_NSEC are not required.
  --signer-socket <name>
      Abstract socket name for nsigner_unix (without leading @).
  --signer-role <role>
      n_signer role selector (default: main).
  --signer-timeout <ms>
      Per-call signer timeout in milliseconds (default: 15000).
  --signer-tcp <host:port>
      Shorthand for --signer nsigner_tcp with host/port parsed.
  --dump-schemas
      Print tool schemas JSON and exit.
  --test-tool <name> <args_json>
      Execute one tool call locally and print JSON result, then exit.

Environment:
  DIDACTYL_NSEC
      Fallback private key when --nsec is not provided (local mode only).
  DIDACTYL_SIGNER
      Fallback signer mode when --signer is not provided.

Examples:
  1) Genesis-based startup
     ./didactyl --config genesis.jsonc

  2) nsec-only startup (no config file)
     ./didactyl --nsec nsec1...

  3) nsec via environment variable
     DIDACTYL_NSEC=nsec1... ./didactyl

  4) Override API bind/port
     ./didactyl --config genesis.jsonc --api-bind 127.0.0.1 --api-port 8484

  5) Sign with a running n_signer (separate the nsec from the agent)
     ./didactyl --signer nsigner_unix --signer-socket nsigner_hairy_dog --admin npub1...

  6) n_signer via TCP
     ./didactyl --signer-tcp 127.0.0.1:7777 --admin npub1...

  7) Dump tool schemas
     ./didactyl --dump-schemas

  8) Test a tool invocation
     ./didactyl --test-tool config_recall '{"config_name":"llm_config"}'
