AI coding assistant CLI.
npm install -g @deniai/flixaor
pnpm install -g @deniai/flixaflixa login
flixa chatLog in to Flixa or save a BYOK API key for another provider.
flixa login
flixa login --provider anthropic
flixa login --provider openai
flixa login --provider custom-openai --base-url http://localhost:1234/v1Flixa includes the built-in providers above plus the provider catalog from
models.dev (OpenAI-compatible gateways, Anthropic-compatible endpoints, and
other catalogued providers). Inspect the available catalog with:
Built-ins: flixa, openai, anthropic, google, openrouter, and
custom-openai.
flixa providers listThe bundled catalog can be refreshed during development with:
pnpm run providers:updateProviders with an OpenAI-compatible endpoint use the shared agent runtime; providers that require native cloud credentials show the required environment variables and must be configured outside Flixa.
Notes:
flixauses browser-based device auth.- Other providers use an API key prompt.
custom-openairequires--base-urlor an entered base URL.- Logging in also sets the selected provider as the default provider.
Remove stored credentials for a provider.
flixa logout
flixa logout --provider anthropicThis removes saved credentials only. It does not undo Claude Code configuration changes.
Inspect configured providers and switch the default provider.
flixa providers list
flixa providers current
flixa providers set-default anthropicSet the default model for the current or specified provider.
flixa model
flixa model --provider anthropic
flixa model claude-sonnet-4-0 --provider anthropic
flixa model gpt-4.1 --provider openaiFor providers with configurable endpoints, you can also pass --base-url.
Start the interactive chat interface.
flixa chat
flixa chat --provider anthropicInside chat:
/compact [focus]summarizes the conversation to free up context. Long conversations are also compacted automatically once they pass about 240,000 characters; setFLIXA_AUTO_COMPACT_CHARSto change the limit (0disables it).- Custom slash commands are Markdown files in
.claude/commands/or.flixa/commands/(project) and the same folders under your home directory.review.mdbecomes/review,frontend/lint.mdbecomes/frontend:lint. Use$ARGUMENTSor$1..$9for arguments and an optionaldescription:/argument-hint:frontmatter. Built-in commands are never overridden. - The agent can keep a task list (
TodoWrite) and read public web pages (WebFetch, asks for approval, blocks private and local addresses). @path/to/fileattaches a file (or a directory listing) to your prompt. Press Tab to complete paths. Only files inside the workspace are attached.# notesaves a note toAGENTS.md(orCLAUDE.mdif that is the file you have)./memory user <note>saves a personal note to~/.flixa/AGENTS.md./rewind [turns|list]undoes the agent's file edits for the last turns (files only, the conversation stays)./export [path]saves the conversation as Markdown./doctorchecks your setup (alsoflixa doctor).- The agent can start background commands (
Bashwithrun_in_background, thenBashOutput/KillShell), delegate work to sub-agents (Task), and load skills (Skill). /agents,/skills,/permissionsand/hooksshow what is configured.
- Sub-agents are Markdown files in
.claude/agents/or.flixa/agents/withdescription:(required),tools:andmodel:frontmatter; the body is the system prompt.general-purposeand read-onlyexploreare built in. Sub-agents cannot start other sub-agents. - Skills are
.claude/skills/<name>/SKILL.mdor.flixa/skills/<name>/SKILL.mdwith adescription:. Only names and descriptions go into the prompt; the agent loads the full text on demand.
Put them in settings.json (~/.flixa/, ~/.claude/, or a project's
.claude/ / .flixa/, plus settings.local.json):
{
"permissions": {
"allow": ["Bash(pnpm test:*)", "Read(src/**)", "WebFetch(domain:docs.example.com)"],
"ask": ["Write(docs/**)"],
"deny": ["Read(.env)", "Bash(git push:*)"]
},
"hooks": {
"PostToolUse": [
{ "matcher": "Edit|Write", "hooks": [{ "type": "command", "command": "pnpm run format" }] }
]
}
}deny beats ask, and ask beats allow. A compound command such as
pnpm test && curl ... is allowed only if every part is allowed. Rules for
Read/Write/Edit/Grep/Glob apply to those tools only; they do not stop a
shell command from reading the same file.
Hooks run PreToolUse, PostToolUse, UserPromptSubmit and Stop commands with
a JSON payload on stdin. Exit code 2 blocks the action and sends stderr back.
A cloned repository must not be able to run code or pre-approve commands just by being opened, so:
- Hooks load only from your user-level settings. Set
FLIXA_TRUST_PROJECT_HOOKS=1to also load project hooks. - Project-level
denyandaskrules always apply, but project-levelallowrules are ignored unlessFLIXA_TRUST_PROJECT_SETTINGS=1.
Run once without the interactive UI. Only the final answer goes to stdout, and
tool progress goes to stderr, so the output is safe to pipe. Tools that need
approval are denied unless you pass --yolo, --auto, or --accept-edits.
flixa --print "Summarize the last commit"
git diff | flixa --print "Review this diff"
flixa --print "/review src/index.ts"Run a complete coding mission from one prompt. Ship mode inspects the repo, implements the focused change, verifies it, and can produce a redacted Markdown card you can paste into a PR or share online.
flixa ship "Add a retry budget to the API client" --share
flixa ship "Fix the failing login flow" --verify "pnpm run build" --share .flixa/ship-card.md
flixa ship "Plan a migration to SQLite" --planPass a GitHub Issue URL to fetch its title, body, labels, and canonical URL before starting the Ship run. The Issue text is treated as untrusted task context, and the share card shows only the title and URL instead of copying the full Issue body:
flixa ship https://github.com/org/repo/issues/123To publish a card, opt in explicitly with --share-url. This creates an
unlisted Flixa Share URL containing the redacted card metadata, changed-file
list, diff stat, verification result, model, and final summary; it does not
publish repository source:
flixa ship "Fix the failing login flow" --share-url
flixa share --share-urlThe default endpoint is https://share.flixa.engineer/api/cards. Set
FLIXA_SHARE_ENDPOINT to point at a local or self-hosted Share service during
development.
The generated card includes a Try this task with Flixa command using the
canary package so someone viewing the card can reproduce the task quickly.
By default, Ship uses guarded auto mode: file edits and shell commands are
reviewed for safety, while deterministic destructive commands are blocked.
Use --interactive for an approval prompt on every edit/command or --yolo
only when you explicitly want to bypass those checks.
Create a card from the latest saved session at any time:
flixa share
flixa share --output .flixa/latest-card.mdWhen a card is generated, its Markdown source is copied to the system clipboard automatically and the terminal renders a rich preview. If the platform has no clipboard utility, the preview still works and the command reports that copying was unavailable.
The first OpenClaw integration is available under
integrations/openclaw-flixa. It registers Flixa as an OpenClaw CLI backend,
so OpenClaw owns channels, pairing, and Gateway sessions while Flixa owns the
coding loop and permissions.
cd integrations/openclaw-flixa
npm install
npm run buildConfigure Claude Code to use Flixa or Anthropic credentials.
flixa claude-code
flixa claude-code --provider flixa
flixa claude-code --provider anthropicWhat this changes:
~/.claude.jsonhasCompletedOnboardingprimaryApiKey
~/.claude/settings.jsonenv.ANTHROPIC_API_KEYenv.ANTHROPIC_BASE_URLwhen supported by the provider
Safety features:
- Prompts before replacing existing values
--dry-runshows planned changes without writing files- Creates
*.bakbackups before writing changed Claude settings files - Stops with an error if an existing Claude JSON file is invalid instead of overwriting it
Supported providers for claude-code:
flixaanthropic
Show account usage information.
flixa usageRun the Codex-related command flow.
flixa codexFlixa stores local config in:
~/.flixa/config.json
This includes things like:
- default provider
- provider-specific base URLs
- provider-specific default models
Credentials are stored per provider using the best available backend for your OS:
- macOS: Keychain via
security - Linux:
secret-toolwhen available, otherwise plaintext fallback in~/.flixa/ - Windows: DPAPI-backed local encrypted file
Fallback credential files may include:
~/.flixa/credentials~/.flixa/credentials-<provider>
Claude Code integration writes to:
~/.claude.json~/.claude/settings.json
If secret-tool is unavailable, Flixa falls back to a file in ~/.flixa/ with best-effort restricted permissions and prints a warning.
If a provider already has saved credentials, run:
flixa logout --provider <provider>Then log in again.
flixa logout does not modify Claude Code config files. Re-run:
flixa claude-code --provider <provider>Use:
flixa login --provider custom-openai --base-url http://your-endpoint/v1pnpm install
pnpm run dev
pnpm run build
pnpm run check
pnpm run lint
pnpm run format