Skip to main content

API Keys

Fliiq needs at least one LLM API key. Add them to ~/.fliiq/.env:
.env
Priority order: Anthropic > OpenAI > Gemini. If your primary provider fails, Fliiq automatically falls back to the next available one. To change the default, see Provider Switching below. For best results with Anthropic (recommended provider): Fliiq works with any model your provider supports. Sonnet 5 is the sweet spot for daily use.

Provider Switching

When multiple API keys are set, Fliiq uses the default priority order (Anthropic > OpenAI > Gemini). Override this per-command with the --provider flag:
For a persistent default, set FLIIQ_PROVIDER in your .env:
.env
Resolution order:
  1. --provider flag (highest priority)
  2. FLIIQ_PROVIDER environment variable
  3. First API key found (Anthropic > OpenAI > Gemini)
See CLI Reference for the full list of commands that accept --provider.

Model Selection

Switch models per-command with --model (or -m):
View all available aliases with:

Built-in Aliases

Default aliases shipped with fliiq init:

Custom Aliases

Aliases are defined in ~/.fliiq/models.yaml (created by fliiq init). Add your own for Ollama, Mistral, DeepSeek, or any other provider:
Then use them like any built-in alias:
Any string not found in aliases is passed through as-is to the provider API.

Persistent Model Override

Override the default model for a provider via environment variable in your .env:
.env
Resolution order: --model flag (highest) > env var (ANTHROPIC_MODEL, etc.) > hardcoded default.

Output Limits and Truncation

Default max_tokens per response is 16384. Override it with FLIIQ_MAX_TOKENS in .env. Anthropic requests automatically use prompt-prefix caching — the stable system prompt and tool schemas are cached, and cache hits bill at roughly 10% of normal input token price. No configuration needed. For long-running Anthropic sessions approaching the context window limit, opt into server-side context compaction with FLIIQ_CONTEXT_COMPACTION=1. If a response is cut off by the output token limit or the agent hits its iteration limit, Fliiq now says so explicitly rather than silently returning a clipped or empty reply — truncated tool calls are discarded instead of executed, and iteration-limited runs get a final wrap-up summarizing what was done and what’s left.

Self-Hosted LLMs

Fliiq can connect to any OpenAI-compatible server — Ollama, vLLM, llama.cpp, LM Studio, LocalAI, or any other server that implements the OpenAI API. Set OPENAI_BASE_URL to point Fliiq at your local server:
.env
OPENAI_API_KEY must still be set (most local servers ignore it — any non-empty value works).

Quick Start with Ollama

Add to ~/.fliiq/.env:
.env
If you also have a cloud API key set, switch between local and cloud with --provider:

Anthropic-Compatible Proxies

If you use a proxy that implements the Anthropic API, set ANTHROPIC_BASE_URL:
.env
Self-hosted models vary in capability. Fliiq’s agent loop works best with models that support tool/function calling. Most large models (Llama 3.2+, Mistral, Qwen) support it via the OpenAI-compatible API.

Integration Credentials

Optional — add these when you need the corresponding skills:

Google (OAuth)

.env
Required for fliiq google auth — the OAuth flow that authorizes Fliiq to access Gmail, Google Calendar, Drive, Sheets, Docs, and Slides. See Google Integration for full setup. Used by: send_email, receive_emails, mark_email_read, archive_email, delete_email, google_calendar, google_drive, google_sheets, google_docs, google_slides

Gmail — Fliiq’s Bot Email

.env
Gives Fliiq its own email address as a channel. The app password is optional if you’ve authorized this account via OAuth instead.

Gmail — App Password (legacy)

.env
Fallback for email skills when OAuth is not configured. Requires a Google App Password. We recommend OAuth instead — it’s more secure and unlocks Calendar access.

Twilio (SMS)

.env
Get these from the Twilio Console. Used by: send_sms, receive_sms

Telegram

.env
Create a bot via @BotFather on Telegram. TELEGRAM_ALLOWED_CHAT_IDS restricts which chats the bot responds to. Used by: send_telegram, send_telegram_audio, Telegram real-time listener (daemon)

Slack

.env
Create an app at api.slack.com/apps with Socket Mode enabled. SLACK_APP_TOKEN and SLACK_BOT_TOKEN together activate the daemon’s real-time listener for DMs and @-mentions. SLACK_ALLOWED_CHANNELS is optional — see Slack channel guide for setup details. Used by: slack, Slack real-time listener (daemon)

MiniMax (Text-to-Speech)

.env
Get these from the MiniMax Platform. The Group ID is found in your account settings. Used by: text_to_speech
.env
Get a free key from Brave Search API. Used by: web_search

Spotify

.env
Create an app at the Spotify Developer Dashboard. Used by: spotify

Directory Structure

Global (~/.fliiq/)

Created by fliiq init. Used from any terminal.

Project (.fliiq/) — optional

Created by fliiq init --project. Overrides global for this project.

Bundled (inside the package)

Ships with Fliiq. Cannot be modified directly.

Config Resolution

When Fliiq looks for a resource (skills, SOUL.md, playbooks, memory):
  1. Project .fliiq/ — checked first
  2. Global ~/.fliiq/ — fallback
  3. Bundled defaults — final fallback
This lets you customize per-project without affecting your global setup, and ensures sensible defaults when nothing is configured.