Documentation

Command reference

Conversation

/clearClear the conversation history
/compactSummarise the history to save context window space
/rewindUndo the last exchange
/retryRe-run the last message with a fresh call
/historyShow the conversation log for this session
/contextSession dashboard: model, memory, and token usage
/pin <message>Pin a reminder into every request
/pinList all pinned reminders
/pin clearRemove one pin or all pins

Model & providers

/model and /providers are the same command — one place to manage everything.

/modelOpen the interactive provider and model manager. Type a number, name, or model to switch. Type add to add a provider or remove <name> to remove one.
/model <name>Smart switch. Accepts a provider name (groq), a model name (gemini-2.0-flash), or a partial match.
/model <provider>/<model>Explicit format, e.g. /model groq/llama-3.3-70b-versatile
/ollamaList installed Ollama models and pick one interactively
/ollama <model>Switch directly to an Ollama model, e.g. /ollama llama3:8b
/routingShow provider ranking and routing reasons for the active skill

Agent & tools

franki uses an agentic loop. It can call tools, see the results, and continue until the task is done. Destructive tools always ask for confirmation unless /auto on is active.

/undoRevert the last file change made by the agent
/diffShow a diff of all files changed this session
/auto on|offEnable or disable auto-accept for all tool calls
/sandbox on|offBlock all destructive tools: write, run, and patch
/auditShow the recent tool execution log
/testRun project tests and inject the output into context
/test <command>Run a specific test command

Tools the agent can call:

read_file      write_file     edit_file      run_command
list_directory search_files   grep_files     apply_patch
run_background check_background               web_search

Context injection

Use these prefixes anywhere in your message to inject external content.

@file.pyInject a file's contents into the message
@src/Inject a directory tree and all file contents
@https://...Fetch a URL and inject its text
@gitInject branch, status, diff, and recent commits
@clipboardInject the current clipboard contents
!commandRun a shell command and inject its output, e.g. !nmap -sV 10.10.10.1
# Examples
@package.json what dependencies are outdated?
@logs/error.log analyse these errors
@git write a commit message for these changes
!nmap -sV 10.10.10.1  what services are exposed here?

Skills

Skills change the system prompt to specialise the AI for a specific domain. franki auto-detects the right skill from your message, and you can also switch manually.

/skill codingCode generation, review, and debugging (default)
/skill pentestCEH-aligned recon, scanning, exploitation, and MITRE ATT&CK reporting
/skill socLog analysis, alert triage, IOC identification, and incident response
/skill securityBroad security mode covering CTF, CEH/OSCP/eJPT prep, vulnerability research, secure coding, and cryptography

Custom skills can be added by placing a .txt system-prompt file in ~/.config/franki/skills/.

Memory

/remember <fact>Save a fact to long-term memory. Persists across sessions.
/memoriesList all saved memory, scopes, and notes
/forget <id|all>Remove a fact by ID, or clear all memory
# Examples
/remember I use Python 3.11 and FastAPI
/remember my pentest lab is 10.10.10.0/24
/memories
/forget 2

Output & search

/exportSave the session as a markdown file
/copyCopy the last AI response to the clipboard
/note <text>Save a timestamped note
/reportGenerate a structured report from the session
/search <query>Run a manual web search and inject the results into context
/costShow token usage and estimated cost for this session

Auto-search: franki automatically runs a web search before the AI responds when your message contains keywords such as latest, current, today, news, or a CVE ID like CVE-2024-12345. Set a Tavily API key with franki config set tavily_api_key <key> for best results. Without one, it falls back to DuckDuckGo.

Security tools

/mitre <behaviour>Map a behaviour to a MITRE ATT&CK technique
/payload <type>Suggest payloads for an attack type
/tools <task>Suggest the right tools for a pentest task
/explain <tool>Explain a tool and its usage
/scope <ip/cidr>Set the pentest target scope
/scope clearClear the active scope

Prompt templates

/templateList saved prompt templates
/template save <name> <prompt>Save a prompt as a named template
/template <name>Run a saved template
/template delete <name>Delete a template

Sessions & branching

/sessionsList saved sessions
/sessions resume <n>Restore a previous session by number
/sessions saveSave the current session
/branch saveCheckpoint the current conversation
/branch restore <name>Revert to a saved checkpoint
/branchList all checkpoints

System

/cd <dir>Change the working directory and update context for file operations
/mcpList connected MCP servers and their tools
/mcp add <name>Add an MCP server connection
/mcp remove <name>Remove an MCP server connection
/auto on|offEnable or disable auto-accept for all tool calls
/autocommit on|offAutomatically commit file changes after every agent edit
/toolpermsView and edit per-tool permission overrides: always, ask, or never
/initRe-run the provider setup wizard
/configOpen the interactive config editor
/profileList saved config profiles
/profile save <name>Save the current config as a named profile
/profile load <name>Restore a named profile
/feedback <text>Send feedback. Saved locally.
/helpShow all available commands
exit / quitExit franki. Prompts to save the session.

Input shortcuts

Alt+Enter / Esc→EnterInsert a newline without submitting the message
EnterSubmit the message
/<tab>Autocomplete slash commands. A popup appears as you type.

One-shot CLI commands

Run these directly from your shell without entering the REPL.

franki fix <file>        # analyse and fix bugs in a file
franki review <file>     # code review a file
franki commit            # generate a commit message from git diff
franki explain <file>   # explain what a file does
franki resume            # resume a saved session
franki init              # run the setup wizard
franki --version         # print the version