Skip to content

AxonOps — AI-Native Control Plane for Open Source Data Platforms

CQLAI Configuration

CQLAI supports multiple configuration methods for maximum flexibility and compatibility with existing Cassandra setups.

Configuration sources are loaded in order (later sources override earlier ones):

  1. CQLSHRC files (for cqlsh compatibility)
  2. CQLAI JSON files
  3. Environment variables
  4. Command-line flags (highest priority)

OptionShortDescription
--host <host>Cassandra host
--port <port>Cassandra port (default: 9042)
--keyspace <ks>-kDefault keyspace
--username <user>-uAuthentication username
--password <pass>-pAuthentication password*
--connect-timeout <sec>Connection timeout (default: 10)
--request-timeout <sec>Request timeout (default: 10)
--no-confirmDisable confirmation prompts
--debugEnable debug logging

*Password can be provided via:

  1. -p flag (not recommended - visible in process list)
  2. Interactive prompt when -u is used without -p
  3. CQLAI_PASSWORD environment variable
OptionShortDescription
--execute <stmt>-eExecute statement and exit
--file <file>-fExecute CQL file and exit
--format <fmt>Output: ascii, json, csv, table
--no-headerOmit column headers (CSV)
--field-separator <sep>Field separator (default: ,)
--page-size <n>Rows per batch (default: 100)
OptionShortDescription
--config-file <path>Path to config file
--help-hShow help
--version-vShow version
Terminal window
# Interactive with authentication
cqlai --host cassandra.example.com -u myuser
# Password: [hidden prompt]
# Execute single statement
cqlai -e "SELECT * FROM users LIMIT 10;"
# Execute script file
cqlai -f schema.cql
# JSON output
cqlai -e "SELECT * FROM users;" --format json
# With specific keyspace
cqlai --host 127.0.0.1 -k my_keyspace
# Using password from environment
export CQLAI_PASSWORD=secret
cqlai --host 127.0.0.1 -u admin

CQLAI uses a JSON configuration file for advanced settings.

CQLAI searches for configuration in:

  1. ./cqlai.json (current directory)
  2. ~/.cqlai.json (home directory)
  3. ~/.config/cqlai/config.json (XDG config directory)

Or specify explicitly:

Terminal window
cqlai --config-file /path/to/config.json
{
"host": "127.0.0.1",
"port": 9042,
"keyspace": "",
"username": "",
"password": "",
"requireConfirmation": true,
"consistency": "LOCAL_ONE",
"pageSize": 100,
"maxMemoryMB": 10,
"connectTimeout": 10,
"requestTimeout": 10,
"debug": false,
"historyFile": "~/.cqlai/history",
"aiHistoryFile": "~/.cqlai/ai_history",
"ssl": {
"enabled": false,
"certPath": "/path/to/client-cert.pem",
"keyPath": "/path/to/client-key.pem",
"caPath": "/path/to/ca-cert.pem",
"hostVerification": true,
"insecureSkipVerify": false
},
"ai": {
"provider": "openai",
"apiKey": "sk-...",
"model": "gpt-4-turbo-preview",
"url": ""
}
}
OptionTypeDefaultDescription
hoststring127.0.0.1Cassandra host
portnumber9042Cassandra port
keyspacestring""Default keyspace
usernamestring""Authentication username
passwordstring""Authentication password
requireConfirmationbooleantrueConfirm dangerous commands
consistencystringLOCAL_ONEDefault consistency level
pageSizenumber100Rows per page
maxMemoryMBnumber10Max memory for results
connectTimeoutnumber10Connection timeout (seconds)
requestTimeoutnumber10Request timeout (seconds)
debugbooleanfalseEnable debug logging
historyFilestring~/.cqlai/historyCommand history path
aiHistoryFilestring~/.cqlai/ai_historyAI history path
{
"ssl": {
"enabled": true,
"certPath": "/path/to/client-cert.pem",
"keyPath": "/path/to/client-key.pem",
"caPath": "/path/to/ca-cert.pem",
"hostVerification": true,
"insecureSkipVerify": false
}
}
OptionDescription
enabledEnable SSL/TLS
certPathClient certificate path
keyPathClient key path
caPathCA certificate path
hostVerificationVerify server hostname
insecureSkipVerifySkip certificate verification (not recommended)

VariableDescription
CQLAI_HOSTCassandra host
CQLAI_PORTCassandra port
CQLAI_KEYSPACEDefault keyspace
CQLAI_USERNAMEUsername
CQLAI_PASSWORDPassword (secure for scripts)
CQLAI_PAGE_SIZEBatch mode page size
VariableDescription
CASSANDRA_HOSTAlternative host variable
CASSANDRA_PORTAlternative port variable
CQLSH_RCPath to cqlshrc file

CQLAI supports two naming conventions for AI provider environment variables:

CQLAI VariableCompatibility VariableDescription
CQLAI_AI_PROVIDERAI provider name (openai, anthropic, ollama, etc.)
CQLAI_AI_KEYOPENAI_API_KEYOpenAI API key
CQLAI_AI_KEYANTHROPIC_API_KEYAnthropic API key
CQLAI_AI_KEYGEMINI_API_KEYGoogle Gemini API key
CQLAI_AI_KEYOPENROUTER_API_KEYOpenRouter API key
CQLAI_OLLAMA_HOSTOLLAMA_URLOllama server URL
OLLAMA_MODELOllama model name

Variable Precedence

CQLAI-prefixed variables (CQLAI_AI_KEY, CQLAI_OLLAMA_HOST) take precedence over provider-specific compatibility variables (OPENAI_API_KEY, OLLAMA_URL). For detailed AI provider configuration, see AI Providers.

Terminal window
# Set credentials via environment
export CQLAI_HOST=cassandra.example.com
export CQLAI_USERNAME=admin
export CQLAI_PASSWORD=secret
export OPENAI_API_KEY=sk-...
# Run CQLAI
cqlai

CQLAI can read standard CQLSHRC files used by cqlsh, making migration seamless.

  • [connection] - hostname, port, ssl settings
  • [authentication] - keyspace, credentials file path
  • [auth_provider] - authentication module and username
  • [ssl] - SSL/TLS certificate configuration
  1. $CQLSH_RC (if set)
  2. ~/.cassandra/cqlshrc
  3. ~/.cqlshrc
; ~/.cassandra/cqlshrc
[connection]
hostname = cassandra.example.com
port = 9042
ssl = true
[authentication]
keyspace = my_keyspace
credentials = ~/.cassandra/credentials
[ssl]
certfile = ~/certs/ca.pem
userkey = ~/certs/client-key.pem
usercert = ~/certs/client-cert.pem
validate = true

CQLAI will automatically read this configuration if present.


Configure AI for natural language query generation. See AI Features for detailed setup.

{
"ai": {
"provider": "openai",
"apiKey": "sk-...",
"model": "gpt-4-turbo-preview"
}
}
{
"ai": {
"provider": "anthropic",
"apiKey": "sk-ant-...",
"model": "claude-3-sonnet-20240229"
}
}
{
"ai": {
"provider": "ollama",
"model": "llama3.2",
"url": "http://localhost:11434/v1"
}
}
{
"ai": {
"provider": "openai",
"apiKey": "your-synthetic-api-key",
"url": "https://api.synthetic.new/openai/v1",
"model": "hf:Qwen/Qwen3-235B-A22B-Instruct-2507"
}
}

{
"host": "127.0.0.1",
"port": 9042,
"consistency": "ONE",
"pageSize": 50,
"requireConfirmation": false
}
{
"host": "cassandra.prod.example.com",
"port": 9042,
"keyspace": "production",
"consistency": "LOCAL_QUORUM",
"pageSize": 100,
"requireConfirmation": true,
"connectTimeout": 30,
"requestTimeout": 30,
"ssl": {
"enabled": true,
"certPath": "/etc/cqlai/client-cert.pem",
"keyPath": "/etc/cqlai/client-key.pem",
"caPath": "/etc/cqlai/ca-cert.pem",
"hostVerification": true
}
}
{
"host": "127.0.0.1",
"port": 9042,
"ai": {
"provider": "anthropic",
"apiKey": "sk-ant-...",
"model": "claude-3-sonnet-20240229"
}
}