CLI Reference
The Feelr CLI (feelr) is a Go binary that talks to the Feelr gateway from your terminal. All data goes to stdout, all errors and prompts go to stderr.
Commands
feelr run
Execute a connector action.
feelr run <connector> <action> [key=value ...] [flags]Arguments:
connector— connector name (github, slack, stripe, discord)action— action name (e.g., issues.list, messages.send)key=value— action parameters as positional args
Flags:
--format <format>— output format:json(default),raw--verbose— include full response envelope with metadata--cursor <value>— pagination cursor for fetching next page--dry-run— show what would be sent without making the request
Examples:
feelr run github repos.list
feelr run github issues.list repo=owner/repo state=open
feelr run slack messages.send channel=#general text="Hello"
feelr run stripe customers.create email=user@example.comfeelr tools
List available connectors and their actions.
feelr tools [flags]Flags:
--search <query>— filter actions by name or description--schema— output raw JSON schema (bypasses formatting)
Examples:
feelr tools
feelr tools --search issues
feelr tools --schemafeelr status
Check gateway health and connector status.
feelr status [flags]Flags:
--verbose— include detailed connector information
feelr auth
Store credentials for a connector.
feelr auth <connector>Prompts for the appropriate credential type (PAT, API key, or starts OAuth flow).
Examples:
feelr auth github # prompts for GitHub PAT
feelr auth slack # starts OAuth flow
feelr auth stripe # prompts for Stripe API key
feelr auth discord # prompts for Discord bot tokenfeelr init
Initialize the CLI configuration.
feelr initPrompts for gateway URL and API key. Writes config to ~/.config/feelr/config.toml.
feelr chain
Work with composable action chains.
feelr chain run
Execute a chain definition.
feelr chain run <chain-name-or-file> [key=value ...] [flags]Flags:
--verbose— show step-by-step progress on stderr--dry-run— validate chain and show mock step outputs without execution
feelr chain list
List available chains.
feelr chain listDiscovers chains from: current directory, chains/ subdirectory, executable-relative chains/, and parent chains/ directories.
feelr chain validate
Validate a chain definition without running it.
feelr chain validate <chain-name-or-file>feelr chain show
Display the steps of a chain.
feelr chain show <chain-name-or-file>Global Flags
| Flag | Description |
|---|---|
--profile <name> | Use a named config profile (default: default) |
--help | Show help for any command |
--version | Show CLI version |
Exit Codes
| Code | Meaning | When |
|---|---|---|
| 0 | Success | Request completed successfully |
| 1 | Error | General error (gateway error, network failure) |
| 2 | Auth required | No credential stored for connector |
| 3 | Not found | Connector or action does not exist |
| 4 | Usage error | Invalid arguments, missing required params |
Configuration
Config File
Located at ~/.config/feelr/config.toml:
[default]
gateway = "https://api.feelr.dev"
api_key = "fk_live_abc123..."
[staging]
gateway = "https://staging.feelr.dev"
api_key = "fk_test_def456..."File permissions are set to 0600 (owner read/write only) for API key security. The config directory uses 0700.
Profiles
Switch between environments with --profile:
feelr run github repos.list --profile=stagingEnvironment Variables
| Variable | Overrides |
|---|---|
FEELR_GATEWAY | gateway in config |
FEELR_API_KEY | api_key in config |
Environment variables take precedence over config file values.
Output Behavior
- Default: Unwrapped JSON data to stdout (just the
datafield) --verbose: Full response envelope includingsuccess,data, andmeta--format=raw: Raw upstream API response (no Feelr normalization)- Errors: Always go to stderr as JSON with
error.codeanderror.message - Prompts: Always to stderr (stdout is reserved for data)
- Terminal detection: The CLI detects whether stdout is a terminal for formatting hints