Didactyl - sovereign Nostr agent Usage: ./didactyl [options] Options: -h, --help Show this help text and exit. -v, --version Show version and exit. --config Path to config/genesis JSONC file (default: ./genesis.jsonc). If file is missing, startup falls back to minimal nsec-only mode. --nsec Private key as nsec1... or 64-char hex; overrides DIDACTYL_NSEC. --admin Administrator pubkey override; accepts npub1... or 64-char hex. --api-port Enable HTTP API and bind to this port (1-65535). --api-bind 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 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 Abstract socket name for nsigner_unix (without leading @). --signer-role n_signer role selector (default: main). --signer-timeout Per-call signer timeout in milliseconds (default: 15000). --signer-tcp Shorthand for --signer nsigner_tcp with host/port parsed. --dump-schemas Print tool schemas JSON and exit. --test-tool 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"}'