freshcrate
Skin:/
Home > AI Agents > aictl

aictl

🤖 AI agent in your terminal

Why this rank:Recent releaseHealthy release cadenceStrong adoption

Description

🤖 AI agent in your terminal

README

aictl 🤖

CI RELEASE

AI agent in your terminal

aictl screenshot

Install

curl -sSf https://raw.githubusercontent.com/pwittchen/aictl/master/install.sh | sh

The installer downloads a prebuilt binary for your platform from the latest GitHub release and places it in ~/.local/bin/aictl. If aictl is already installed at ~/.cargo/bin/aictl (e.g. from a prior cargo install), the installer updates it in place at that location instead of the default ~/.local/bin/. Set AICTL_INSTALL_DIR to pick a different location explicitly. If no prebuilt binary exists for your platform, the installer falls back to building from source with cargo install.

Supported platforms

Prebuilt binaries are published for:

OS Architectures
Linux x86_64, aarch64
macOS x86_64, aarch64 (Apple Silicon)

Native Windows is not supported — aictl depends on a POSIX shell (sh) and Unix tools (date, pbcopy, etc.) for its built-in tool calls. Windows users can run aictl inside WSL using the Linux binary, which works normally.

Other platforms (FreeBSD, other BSDs, uncommon Linux architectures) can still build from source via the cargo install fallback path, provided a Rust toolchain is available.

Prerequisites

Installing a prebuilt binary has no prerequisites beyond curl. Building from source (either via the installer fallback or manually) requires Rust (edition 2024).

From source

git clone git@github.com:pwittchen/aictl.git
cd aictl
cargo install --path .

This installs the aictl binary to ~/.cargo/bin/.

Build without installing

cargo build --release

The binary will be at target/release/aictl.

Uninstall

Binary release (installed via install.sh)

The install script places the binary at ~/.local/bin/aictl (or $AICTL_INSTALL_DIR if you set it). Remove it with:

rm ~/.local/bin/aictl

From source (installed via cargo install)

Cargo tracks its own installs, so the clean way is:

cargo uninstall aictl

This removes ~/.cargo/bin/aictl. If cargo uninstall doesn't find it (e.g. installed under a different crate name), delete the binary directly:

rm ~/.cargo/bin/aictl

Remove configuration and data (optional)

aictl stores all state under ~/.aictl/ — config file, saved agents, saved sessions. To wipe it completely:

rm -rf ~/.aictl

Skip this step if you plan to reinstall and want to keep your API keys, agents, and session history.

Usage

aictl [--version] [--update] [--config] [--provider <PROVIDER>] [--model <MODEL>] [--message <MESSAGE>] [--auto] [--quiet] [--unrestricted] [--incognito] [--agent <NAME>] [--list-agents] [--session <ID|NAME>] [--list-sessions] [--clear-sessions]

Omit --message to enter interactive REPL mode with persistent conversation history.

REPL Commands

The interactive REPL supports slash commands:

Command Description
/agent Manage agents (create manually, create with AI, view/load/delete, unload)
/clear Clear conversation context
/compact Summarize conversation into a compact context
/context Show context usage (token and message counts vs limits)
/copy Copy last response to clipboard
/help Show available commands
/info Show setup info (provider, model, behavior, memory, agent, version, OS, binary size)
/issues Fetch and display known issues from the remote ISSUES.md
/memory Switch memory mode: long-term (all messages) or short-term (sliding window)
/security Show current security policy (blocked commands, CWD jail, timeouts, etc.)
/session Manage sessions (show current info, set name, view/load/delete saved, clear all)
/behavior Switch between auto and human-in-the-loop mode during the session
/model Switch model and provider during the session (persists to ~/.aictl/config)
/tools Show available tools
/update Update to the latest version
/exit Exit the REPL

Press Esc during any LLM call or tool execution to interrupt the operation and return to the prompt. Conversation history is rolled back so the interrupted turn has no effect.

Parameters

Flag Short Description
--version -V Print version information
--update -u Update to the latest version
--config -C Interactive configuration wizard — set provider, model, and API keys step by step
--provider -p LLM provider (openai, anthropic, gemini, grok, mistral, deepseek, kimi, zai, or ollama). Falls back to AICTL_PROVIDER in ~/.aictl/config
--model -M Model name (e.g. gpt-4o). Falls back to AICTL_MODEL in ~/.aictl/config
--message -m Message to send (omit for interactive mode)
--agent -A Load a saved agent by name (works in both single-shot and interactive modes)
--list-agents -L Print saved agents from ~/.aictl/agents/ and exit
--auto -a Run in autonomous mode (skip tool confirmation prompts)
--quiet -q Suppress tool calls and reasoning, only print the final answer (requires --auto)
--unrestricted -U Disable all security restrictions (use with caution)
--incognito -i Start interactive REPL without saving any session (disables /session). Falls back to AICTL_INCOGNITO in ~/.aictl/config
--session -s Load a saved session by uuid or name on startup (interactive mode only)
--list-sessions -l Print saved sessions from ~/.aictl/sessions/ and exit
--clear-sessions -c Remove all saved sessions and exit

CLI flags take priority over config file values.

Sessions

In interactive mode, each REPL run is a session. A new uuid is generated at startup and the conversation is persisted to ~/.aictl/sessions/<uuid> as JSON after every agent turn and compaction. Session names (optional, unique) are stored in ~/.aictl/sessions/.names. On exit, the session uuid (and name, if set) is printed.

Use /session to show current session info, assign a readable name, browse saved sessions (load or delete with confirmation), or clear all sessions. Pass --session <uuid|name> to resume an existing session on startup. Incognito mode (--incognito or AICTL_INCOGNITO=true) runs the REPL without creating or saving any session file; /session is disabled and displays a notice.

Agents

Agents are reusable system prompt extensions that specialize the LLM for dedicated tasks or behaviors. Agent prompts are stored as plain text files in ~/.aictl/agents/.

Use /agent to open the agent menu:

  • Create agent manually — enter a name and type or paste the agent prompt text directly
  • Create agent with AI — provide a name and brief description; the LLM generates the full agent prompt
  • View all agents — browse saved agents, view their prompt, load an agent, or delete it
  • Unload agent — remove the currently loaded agent (only shown when one is loaded)

Agents can also be loaded from the command line with --agent <name> (or -A <name>), which works in both single-shot and interactive modes.

Agent names may contain only letters, numbers, underscores, and dashes. When an agent is loaded, its prompt is appended to the system prompt and the agent name appears in magenta brackets before the input prompt (e.g. [my-agent] ❯).

Configuration

Configuration is loaded from ~/.aictl/config. This is a single global config file.

Additionally, aictl loads a project prompt file from the current working directory (default: AICTL.md). If present, its contents are appended to the system prompt, allowing per-project instructions for the agent. The filename can be customized via AICTL_PROMPT_FILE in ~/.aictl/config.

The quickest way to get started is the interactive wizard:

aictl --config

It walks you through selecting a provider, model, and entering API keys. You can also edit ~/.aictl/config manually at any time.

Basic configuration

You need to configure API key for the provider and model you want to use. AICTL_MEMORY and AICTL_INCOGNITO params are optional.

Key Description
AICTL_PROVIDER Default provider (openai, anthropic, gemini, grok, mistral, deepseek, kimi, zai, or ollama)
AICTL_MODEL Default model name
AICTL_MEMORY Memory mode: long-term (all messages, default) or short-term (sliding window)
AICTL_INCOGNITO Start interactive REPL without saving sessions. Accepts true or false (default: false)
AICTL_PROMPT_FILE Filename for the project prompt file loaded from the current directory (default: AICTL.md)
AICTL_TOOLS_ENABLED Enable or disable all tool calls. When false, the LLM can only respond with plain text (default: true)
AICTL_AUTO_COMPACT_THRESHOLD Context usage percentage at which the REPL auto-compacts the conversation. Accepts an integer in 1..=100 (default: 80)

API keys

FIRECRAWL_API_KEY is optional and is needed only if you want to use search_web tool.

Not all API keys are required. You need to provide only those, for which you set AICTL_PROVIDER and AICTL_MODEL.

If you want to use multiple LLM providers, then you need to provide appropriate keys.

Key Description
LLM_OPENAI_API_KEY API key for OpenAI
LLM_ANTHROPIC_API_KEY API key for Anthropic
LLM_GEMINI_API_KEY API key for Google Gemini
LLM_GROK_API_KEY API key for xAI Grok
LLM_MISTRAL_API_KEY API key for Mistral
LLM_DEEPSEEK_API_KEY API key for DeepSeek
LLM_KIMI_API_KEY API key for Kimi (Moonshot AI)
LLM_ZAI_API_KEY API key for Z.ai
LLM_OLLAMA_HOST Ollama server URL (default: http://localhost:11434)
FIRECRAWL_API_KEY API key for Firecrawl (search_web tool)

Security configuration (optional)

Key Description
AICTL_SECURITY Master security switch (default: true)
AICTL_SECURITY_INJECTION_GUARD Block user prompts that look like prompt-injection attempts (default: true)
AICTL_SECURITY_CWD_RESTRICT Restrict file tools to working directory (default: true)
AICTL_SECURITY_SHELL_ALLOWED Comma-separated whitelist of allowed shell commands (empty = all except blocked)
AICTL_SECURITY_SHELL_BLOCKED Additional blocked shell commands (added to built-in defaults)
AICTL_SECURITY_BLOCK_SUBSHELL Block $(), backticks, and process substitution (default: true)
AICTL_SECURITY_BLOCKED_PATHS Additional blocked file paths (added to built-in defaults)
AICTL_SECURITY_ALLOWED_PATHS Paths allowed outside the working directory
AICTL_SECURITY_SHELL_TIMEOUT Shell command timeout in seconds (default: 30)
AICTL_SECURITY_MAX_WRITE Max file write size in bytes (default: 1048576 = 1 MB)
AICTL_SECURITY_DISABLED_TOOLS Comma-separated tool names to disable (e.g. exec_shell,search_web)
AICTL_SECURITY_BLOCKED_ENV Additional env vars to scrub from shell subprocesses

Create ~/.aictl/config (see .aictl/config in this repo for the reference):

AICTL_PROVIDER=anthropic
AICTL_MODEL=claude-sonnet-4-20250514
LLM_ANTHROPIC_API_KEY=sk-ant-...
FIRECRAWL_API_KEY=fc-...

The file format supports comments (#), quoted values, and optional export prefixes.

Providers

aictl supports nine LLM providers:

OpenAI

Requires LLM_OPENAI_API_KEY. Supported models with cost estimates (input/output per 1M tokens):

Model Input Output
gpt-4.1-nano $0.10 $0.40
gpt-4.1-mini $0.40 $1.60
gpt-4.1 $2.00 $8.00
gpt-4o-mini $0.15 $0.60
gpt-4o $2.50 $10.00
gpt-5-mini $0.25 $2.00
gpt-5 $1.25 $10.00
gpt-5.2 $1.75 $14.00
gpt-5.2-pro $30.00 $180.00
gpt-5.4-nano $0.20 $1.25
gpt-5.4-mini $0.75 $4.50
gpt-5.4 $2.50 $15.00
gpt-5.4-pro $60.00 $270.00
o4-mini $1.10 $4.40
o3 $2.00 $8.00
o1 $15.00 $60.00

GPT-5.2 and GPT-5.4 use dual-tier pricing that doubles above the 272K context threshold; the table shows the short-context rates. The cost meter in aictl always reports the short-context price.

Anthropic

Requires LLM_ANTHROPIC_API_KEY. Supported models with cost estimates (input/output per 1M tokens):

Model Input Output
claude-haiku-* (3.x) $0.25 $1.25
claude-haiku-4-* $1.00 $5.00
claude-sonnet-* $3.00 $15.00
claude-opus-4-5-* / claude-opus-4-6-* $5.00 $25.00
claude-opus-4-* (older) $15.00 $75.00

Google Gemini

Requires LLM_GEMINI_API_KEY. Supported models with cost estimates (input/output per 1M tokens):

Model Input Output
gemini-3.1-pro-preview $2.00 $12.00
gemini-3.1-flash-lite-preview $0.25 $1.50
gemini-2.5-pro $1.25 $10.00
gemini-2.5-flash $0.15 $0.60

Gemini 3.1 Pro uses dual-tier pricing that doubles above a 200K context threshold; the table shows the short-context rates. gemini-2.0-flash has been removed from the model list because Google is shutting it down on June 1, 2026.

xAI Grok

Requires LLM_GROK_API_KEY. Supported models with cost estimates (input/output per 1M tokens):

Model Input Output
grok-4 $3.00 $15.00
grok-4-fast-reasoning / grok-4-fast-non-reasoning $0.20 $0.50
grok-4-1-fast-reasoning / grok-4-1-fast-non-reasoning $0.20 $0.50
grok-3 $3.00 $15.00
grok-3-mini $0.30 $0.50

Grok 4 Fast variants ship with a 2M-token context window, the largest available across frontier models.

Mistral

Requires LLM_MISTRAL_API_KEY. Supported models with cost estimates (input/output per 1M tokens):

Model Input Output
mistral-large-latest $2.00 $6.00
mistral-medium-latest $0.40 $2.00
mistral-small-latest $0.10 $0.30
codestral-latest $0.30 $0.90

DeepSeek

Requires LLM_DEEPSEEK_API_KEY. Supported models with cost estimates (input/output per 1M tokens):

Model Input Output
deepseek-chat $0.27 $1.10
deepseek-reasoner $0.55 $2.19

Kimi

Requires LLM_KIMI_API_KEY. Supported models with cost estimates (input/output per 1M tokens):

Model Input Output
kimi-k2.5 $0.60 $2.00
kimi-k2-0905-preview $0.60 $2.00
kimi-k2-0711-preview $0.60 $2.00
kimi-k2-turbo-preview $0.60 $2.00
kimi-k2-thinking $0.60 $2.00
kimi-k2-thinking-turbo $0.60 $2.00
moonshot-v1-128k $0.60 $2.00
moonshot-v1-32k $0.60 $2.00
moonshot-v1-8k $0.60 $2.00

Z.ai

Requires LLM_ZAI_API_KEY. Supported models with cost estimates (input/output per 1M tokens):

Model Input Output
glm-5.1 $1.40 $4.40
glm-5-turbo $1.20 $4.00
glm-5 $0.72 $2.30
glm-4.7 $0.39 $1.75
glm-4.7-flash $0.06 $0.40

Ollama

Ollama runs models locally — no API key required. Install Ollama from ollama.com, pull a model, and start the server:

ollama pull llama3.2
ollama serve

Then configure aictl to use it:

AICTL_PROVIDER=ollama
AICTL_MODEL=llama3.2:latest

Available models are detected automatically from your local Ollama instance via the REST API. The /model command shows only models you have pulled locally. If Ollama is not running, it will not appear in the model menu.

By default, aictl connects to http://localhost:11434. To use a different address, set LLM_OLLAMA_HOST in ~/.aictl/config.

All Ollama models are free (self-hosted), so cost estimation shows $0.00.

Any model string can be passed via --model; cost estimation uses pattern matching on the model name and falls back to zero if unrecognized.

Cost estimates

The per-token tables above tell you what each model charges; they don't tell you what a realistic workday actually costs. For that, see LLM_PRICING.md — it models two usage patterns (chat assistant and coding agent) and reports daily and monthly totals for every model in the catalog.

The headline numbers for intensive use (150 chat turns/day or 50 coding tasks/day, 22 working days/month, cached pricing):

Usage pattern Cheapest Flagship cluster Opus 4.6
Chat $2.64/mo (grok-4-fast) ~$35–$48/mo $69.74/mo
Coding agent $34.76/mo (grok-4-fast) ~$460–$525/mo $874.50/mo

A few things worth knowing before you budget:

  • Intensive coding agent use is roughly 60× more expensive than chat use on any given model, because the agent loop re-sends the growing conversation history each iteration and produces long, code-heavy outputs. Tool call count is not the dominant factor.
  • Prompt caching cuts costs roughly in half, but the "cached" column is only reliable for Anthropic — aictl explicitly writes to Anthropic's prompt cache via cache_control markers. OpenAI, Gemini, Grok, DeepSeek, and Kimi cache automatically server-side, so you'll hit cached rates during sustained sessions but not after idle gaps longer than the provider's TTL (typically 5–10 minutes). Z.ai GLM and Mistral have no cache handling in aictl, so they always bill at the full rate.
  • The cost meter that aictl prints after every turn reflects actual cached vs. fresh tokens from each provider's response, so it's more accurate than any estimate. If you want to know what your specific workload really costs, run a few typical sessions and watch the per-turn summary.

Agent Loop & Tool Calling

aictl runs an agent loop: the LLM can invoke tools, see their results, and continue reasoning until it produces a final answer.

By default, every tool call requires confirmation (y/N prompt). Use --auto to skip confirmation and run autonomously.

Available tools:

Tool Description
exec_shell Execute a shell command via sh -c
read_file Read the contents of a file
write_file Write content to a file (first line = path, rest = content)
remove_file Remove (delete) a file (regular files only, not directories)
create_directory Create a directory and any missing parent directories
list_directory List files and directories at a path with [FILE]/[DIR]/[LINK] prefixes
search_files Search file contents by pattern (grep regex) with optional directory scope
edit_file Apply a targeted find-and-replace edit to a file (exact unique match required)
search_web Search the web via Firecrawl API (requires FIRECRAWL_API_KEY)
find_files Find files matching a glob pattern (e.g. **/*.rs) with optional base directory
fetch_url Fetch a URL and return readable text content (HTML tags stripped)
extract_website Fetch a URL and extract only the main readable content (strips scripts, styles, nav, boilerplate)
fetch_datetime Get the current date, time, timezone, and day of week
fetch_geolocation Get geolocation data for an IP address (city, country, timezone, coordinates, ISP) via ip-api.com

The tool-calling mechanism uses a custom XML format in the LLM response text (not provider-native tool APIs):

<tool name="exec_shell">
ls -la /tmp
</tool>

The agent loop runs for up to 20 iterations. LLM reasoning is printed to stderr; the final answer goes to stdout. Token usage, estimated cost, and execution time are always displayed after each response.

Security

All tool calls pass through a configurable security policy (src/security.rs) before execution. By default:

  • Shell command blocking: dangerous commands are blocked (rm, sudo, dd, mkfs, nc, etc.). Command substitution ($(...), backticks) is blocked. Compound commands (|, &&, ||, ;) are split and each segment is validated independently.
  • CWD jail: file tools (read_file, write_file, remove_file, edit_file, create_directory, list_directory, search_files, find_files) can only operate within the working directory. Path traversal via .. is defeated by canonicalization.
  • Blocked paths: sensitive paths are always blocked (~/.ssh, ~/.gnupg, ~/.aictl, ~/.aws, ~/.config/gcloud, /etc/shadow, /etc/sudoers).
  • Environment scrubbing: shell subprocesses receive a clean environment — vars matching *_KEY, *_SECRET, *_TOKEN, *_PASSWORD are stripped so API keys cannot leak.
  • Shell timeout: commands are killed after 30 seconds (configurable).
  • Write size limit: file writes are capped at 1 MB (configurable).
  • Output sanitization: tool results are sanitized to prevent prompt injection via <tool> tags.
  • Injection guard: user prompts are scanned before being sent to the LLM. Inputs containing instruction-override phrases ("ignore previous instructions", "disable security", etc.) or forged role/tool tags (<tool â€Ļ>, <|system|>, ### System:, etc.) are blocked with a clear error. Disable with AICTL_SECURITY_INJECTION_GUARD=false.

Security denials are returned to the LLM as tool results (displayed in red) so it can adapt. Use --unrestricted to disable all security checks. Individual settings are configurable via AICTL_SECURITY_* keys in ~/.aictl/config.

Examples

# With defaults configured in ~/.aictl/config, just run:
aictl

# Or send a single message:
aictl -m "What is Rust?"

# Override provider/model from the command line:
aictl -p openai -M gpt-4o -m "What is Rust?"

# Agent with tool calls (interactive confirmation)
aictl -m "List files in the current directory"

# Autonomous mode (no confirmation prompts)
aictl --auto -m "What OS am I running?"

# Quiet mode (only final answer, no tool calls or reasoning)
aictl --auto -q -m "What OS am I running?"

Tests

cargo test

Unit tests cover core logic across six modules: commands (slash command parsing), config (config file parsing), tools (tool-call XML parsing), ui (formatting helpers), llm (cost estimation and model matching), and security (shell validation, path validation, output sanitization). The session module handles persistence of REPL conversations under ~/.aictl/sessions/.

Architecture

See ARCH.md for detailed ASCII diagrams covering:

  • Module structure
  • Startup flow
  • Agent loop
  • Tool execution dispatch
  • LLM provider abstraction
  • UI layer
  • End-to-end data flow

Claude Code Skills

This project includes Claude Code skills for common workflows. Run them as slash commands in a Claude Code session:

Skill Description
/commit Commit staged and unstaged changes with a clear commit message
/update-docs Update README.md, CLAUDE.md, and ARCH.md to match the current project state
/evaluate-rust-quality Audit code quality, idiomatic Rust usage, and best practices
/evaluate-rust-security Audit security posture, injection risks, and credential handling
/evaluate-rust-performance Audit performance patterns, allocations, and CLI responsiveness

Evaluation reports are saved to .claude/reports/ with timestamped filenames.

Known Issues & Ideas

See ISSUES.md for a list of known issues and planned improvements.

License

This project is licensed under the PolyForm Noncommercial License 1.0.0. It is free to use for non-commercial purposes, including personal use, research, education, and use by non-profit organizations. For commercial use, please contact piotr@wittchen.io.

Release History

VersionChangesUrgencyDate
v0.47.4- fixed release.yml (7af7735)High6/2/2026
v0.47.2- Add gemini-3.5-flash and gpt-image-1.5 to model catalog (af7389a) - Document Metal Toolchain requirement for MLX builds (8ac75f4) - Add About icon to desktop titlebar (645663b) - ran cargo update (939fb38) - Add coding-agent icon to website app previews (3acfdb0)High5/23/2026
v0.47.1- Sync model catalog with provider docs (40fa375) - Separate cyan cursor from letter in favicon (dc41925) - Improve SEO and GEO discoverability of the website (728b057)High5/18/2026
v0.44.0- Document macOS multi-binary Keychain prompt (afd27a3) - Revert shared macOS Keychain entitlement (68c8625)High5/11/2026
v0.38.2- Retry hdiutil DMG creation on Resource busy (f5a5230)High5/5/2026
v0.35.0- Add aictl-server HTTP LLM proxy (efe18a9)High4/29/2026
v0.33.0- Add end-to-end CLI smoke tests under tests/ (7306c3f) - Replace Box<dyn Error> with unified AictlError enum (73cee43) - Decompose large dispatcher functions in repl, main, and wizard (78e48a8) - Add /roadmap command to view project roadmap in REPL (8eae555) - Add search mode to /model picker (133f94a) - Add /undo command to drop the last N turns (00482cb) - Update ROADMAP.md (a39da70) - Update ROADMAP.md (ae221f4) - Add quality improvements section to roadmap (cf9d6c0) - Add /roadmap command tHigh4/23/2026
v0.30.1- Autocomplete agents and skills in the REPL (23eb8d9)High4/21/2026
v0.30.0- changed "All" -> "all" in the menu of agents and skills (2a4f4ca) - updated category of critic: thinking-habits -> thinking (f40725f) - Add datafast analytics script to website (3a0d328)High4/21/2026
v0.29.0- moved resolved plans to done/ dir (1aae012) - cargo upgrade --incompatible (4f6c152) - Add remote skills catalogue (84a24d6) - Fill trailing empty grid slots with the card background (a2ca52e) - Add remote agents catalogue (387a6fa) - Trim .aictl/ agents and skills to curated core (83e98be) - removed weekly-review skill (8559a4c) - re-organized skills and agents (fbb15b4) - Add demix skill for audio CLI invocation (c436e22) - Move official agents/ and skills/ under .aictl/ (6bacfab) - Seed skiHigh4/21/2026
v0.28.0- Document skills across README, ARCH, CLAUDE, and website (34f43e5) - Add skills: one-turn markdown playbooks (11ad5be) - added new project stats report (672fb69) - Add short promo text for X (e381175) - Mention outbound redaction in promo text (3a0a107) - added padding-top for the install hint on the website (cc48cb1)High4/20/2026
v0.27.1- Enable redaction-ner in release builds (cb70ab9) - added new quality report (3c06b48)High4/20/2026
v0.27.0- Add sensitive-data redaction at the network boundary (e4e53c7) - Condense CLAUDE.md (fd29216)High4/20/2026
v0.26.7- Drop MLX-broken-on-CI warning, document metallib shipping (6193bdc) - Show mlx.metallib path in /info on Apple Silicon (98f366c) - Remove sibling mlx.metallib during uninstall (a637760)High4/20/2026
v0.26.6- Ship mlx.metallib with macOS aarch64 release binary (6151ae2)High4/20/2026
v0.26.5- Pin macOS aarch64 release build to macos-15 runner (c5814f6) - Add 'Get in touch' mail button to website hero (6d42c35) - wrapped install command into formatted code block in the guides.html on the website (85a6c3e) - Document that MLX prebuilt binary is broken on CI (90fac4d)High4/20/2026
v0.26.4- Drop Metal Toolchain download step on macOS aarch64 CI (d8000f9) - Select Xcode 16 before downloading Metal Toolchain on CI (572e41f) - Install Xcode Metal Toolchain on macOS aarch64 CI build (159fe6d) - Show version in guides.html hero tag (58d293a) - Wrap footer links on narrow viewports (29a0e2c) - added hashtags to promo text (9d06ac2) - Add sensitive data redaction plan (a989c9c) - renamed dir (47924df) - updated screenshot (c848a9e) - Add news-brief skill to skill-templates plan (35dab75High4/20/2026
v0.26.3- Align tool-execution spinner with surrounding content (f655abd) - Update PROMO_TEXT.md (4295b41)High4/18/2026
v0.26.2- Always refresh version cache on online checks (c3c1d7c) - simplified update info in the welcome banner (ac85acd)High4/18/2026
v0.26.1- updated mascots (c115c26) - Cache remote version check for 24 hours (e6bbfe2) - Add integration tests with a mock LLM provider (8ed6399) - Make website mobile-friendly with drawer menu (54c59b0) - added new assistant templates ideas to the plan (59dc180)High4/18/2026
v0.26.0- updated description in the hero section of the website (74cc8e4) - Shorten audit log card on guides page (4eca94c) - removed resolved task from the roadmap (fb1449b) - updated guides page on the website - format enhancments (af3e1eb) - Add unit tests for agents, session, and keys modules (c1f6e8a) - Document audit log across all docs (e920272) - Add per-session tool-call audit log (cfb2120) - Split main.rs into agent loop, REPL, and message modules (e78baf0) - Add symlink regression tests for High4/18/2026
v0.25.0- Document diff_files, archive, checksum, clipboard, notify tools (05ee5ae) - Add notify tool for desktop notifications (067852b) - Add clipboard tool for reading and writing system clipboard (c608fff) - Add checksum tool for SHA-256/MD5 file hashing (8275afa) - Add archive tool for tar.gz/tgz/tar/zip archives (b246dce) - Add diff_files tool for unified file comparison (f33386f) - added development plan for skills (b3b7f62) - added development plan for plugins (0645c5a) - Format config example iHigh4/17/2026
v0.24.2- added link to user guides in the README.md (d559218) - Add user-focused guides page to the website (290f699) - changed default LLM timeout: 300s -> 30s (589a245)High4/16/2026
v0.24.1- Group LLM provider modules under src/llm/ (b0aecec) - Split commands into submodules (bde61db) - Split tools into submodules (8adf03f) - Split llm_mlx into submodules (f339585) - added /project-stats-report claude code skill mention to the readme (c5acc0a) - updated number of models on the website (b28423c)High4/16/2026
v0.24.0- Make agent loop iteration cap configurable (61ece3c) - Cache GGUF model and add configurable LLM response timeout (a53f459) - edited model provider label: MLX -> Native MLX (5fb2593) - added LLM timeout config to the roadmap (95ec9fd) - Document tested MLX models and add Gemma 2 to supported list (cc24217) - Show only count of downloaded GGUF and MLX models in /info (183e397) - Add Gemma 2 MLX inference support (b85e793) - added new thing to the roadmap (ff4397e) - Fix MLX loading for Qwen2-faHigh4/16/2026
v0.23.6- Remove /issues REPL command (4420c0e) - Fix website deploy using stale version after release (e40960e)High4/16/2026
v0.23.5- Mention usage instructions in docs link on website (ffe3998) - Skip CI for website-only changes (169d13b) - Add docs link to website install section (9cb41a8) - Trigger website deploy after successful release (a5210db)High4/16/2026
v0.23.4- added gh action status badge for deploy website in the README.md (a514144) - renamed gh action to caps lock (d4770e6) - Point install URL to aictl.app (1059033) - Build website with Bun in CI before deploying (3dbe234) - added VPS port to the deploy-website gh action (0ca2272) - Add GitHub Actions workflow to deploy website to VPS (735c00a) - Clarify that Ollama is optional, not unavailable (8ea0766) - Add comparison section to website (88b3912) - udpated .gitignore (0459f56) - Add platform loHigh4/16/2026
v0.23.3- fixed param hint in the session end: replaced -s param with --session param (231a5a6) - Add project stats report for 2026-04-15 (77f5fec) - Add /project-stats-report skill (86dc1b3)High4/15/2026
v0.23.2- updated hints in the /help and /mlx commands (6f40d14)High4/15/2026
v0.23.1- executed cargo fmt (046827d) - Fix clippy format warning in stats output (75075fc) - Improve stats display formatting (13ec2ec) - fixed formatting in ARCH.md (bbd6309)High4/15/2026
v0.23.0- Add --uninstall flag and /uninstall REPL command (ba9a957)High4/15/2026
v0.22.0- Rename Provider::Local to Provider::Gguf and refresh docs (be56c4a)High4/15/2026
v0.21.0- Implement native MLX inference and split /info providers (b984c37) - Add experimental MLX provider for Apple Silicon (e7ea583) - Add LM Studio catalog presets and rename local feature to gguf (3735b36) - Rename /local command and CLI flags to /gguf (df3b4aa) - Add note about AI-assisted development to README (0b36a89) - updated roadmap (removed server feature) (0255e77)High4/15/2026
v0.20.0- Refresh build datetime on every build (3376f67) - fixed format, updated dependencies (686f0d7) - Show build datetime in /info output (03ad998) - Drop short CLI flags except -v and -h (2a8be06) - Merge stats and key commands into interactive menus (c2d2c7b) - Break tool-call loops by blocking duplicate invocations (93b3e11) - updated issues: added note about unifying commands and removing shortflags (3ab4728)High4/14/2026
v0.19.0- Add experimental native GGUF model support (b337882) - updated issues (cfaa467) - updated project dependencies (69be054)Medium4/14/2026
v0.18.1- Add usage statistics tracking with /stats and /clear-stats commands (77778fb) - Fix README model count and add missing CLI flags (398ac3f)High4/13/2026
v0.18.0- Add spreadsheet reading to read_document tool (529d08b) - Add read_document tool, show tool count in /info, drop Windows deps (d87e330) - format issues (8a635b6) - Show provider and model counts in /info command (b2df5c1) - removed solved issue from issues (c6d9224) - add agent prompt editing in REPL (8792056) - updated Cargo.lock (3b1020c) - updated issues (/info command improvement) (48d03ab) - updated issues (77c51db) - added issue with stats (966b1b9) - Fix pasted agent prompts being truncMedium4/13/2026
v0.17.1- Add /version command to check for updates without installing (c88bd70)Medium4/12/2026
v0.17.0- Add multi-provider image generation tool (e84fe04)Medium4/12/2026
v0.16.0- Add image processing for vision-capable models (52af183)Medium4/12/2026
v0.15.4- Improve /security and welcome banner key display (efa6c23)Medium4/12/2026
v0.15.3- Fix clippy manual_range_contains warning (7676514) - Extend sleepy mascot window through 06:00 (9522fbb)Medium4/11/2026
v0.15.2- Show sleepy mascot after 22:00 (2fd871a)Medium4/11/2026
v0.15.1- Stop cloning history and blocking REPL on version fetch (8a7ff44) - added project reports (846f243) - updated screenshot (1767b7b)Medium4/11/2026
v0.15.0- Install libdbus-1-dev on Linux CI runners (97940e7) - Add /config command and CLI flags for key management (61428be) - Offer to lock API keys at the end of the config wizard (cf545e4) - Document keyring-backed key storage in README, CLAUDE, ARCH (494235f) - Remove resolved key storage entries from ISSUES.md (329560b) - Fix UTF-8 panic when tool output is truncated mid-character (8e42cc0) - Add system keyring storage for API keys (9e127f2) - docs: clarify licensor-reserved rights in LICENSE. (eMedium4/11/2026
v0.14.0- Rename thinking mode to memory mode (a200af7) - security: detect and block prompt injection attempts (8b21745) - bumped deps in Cargo.lock (d5b0955) - Show Opus 4.6 cached price in TL;DR cost tables (feb52d6) - Link README to LLM_PRICING.md with headline cost numbers (6d89dac) - Add LLM_PRICING.md with daily and monthly cost estimates (b578394) - Refresh model catalog across providers (6390403) - Add claude-opus-4-6 to model list (9e98f12) - Report and price per-provider prompt caching in costHigh4/11/2026
v0.13.6- Detect existing install location in install.sh (6620ede) - Sync Cargo.lock version in release workflow (98eb5eb) - updated Cargo.lock (2013ddc)Medium4/11/2026
v0.13.5- updated Cargo.lock (fdf8104) - Show binary path in /info output (351bf9b) - Bump GitHub Actions to Node.js 24 compatible versions (d868d75) - Document supported platforms in README (9278768)Medium4/11/2026
v0.13.4- Ship prebuilt binaries via install.sh, drop Windows target (094ce13) - Show auto-compact threshold in /context output (320ca1b)Medium4/11/2026
v0.13.3- updated Cargo.lock (4cbcaa9) - Retry malformed tool calls instead of treating them as final answer (6b2b11e) - Make auto-compact threshold configurable (b226253)Medium4/11/2026
v0.13.2- Add workflow_dispatch trigger to release workflow (3c21a5e) - Speed up aarch64 release build with native ARM runner and cache (9f99df3) - Add multi-platform binaries to GitHub release workflow (5828690) - Update config (b5f0384) - Update config (c3853ff) - Update config (ea3e5e6) - Refine ISSUES.md for clarity and consistency (1c6d038) - Refine ISSUES.md for clarity and priority (f2e5ec0) - fixed cargo fmt (f837749) - fixed formatting in ARCH.md (c3ae218) - Add --list-agents flag to documentatMedium4/10/2026
v0.13.1- updated Cargo.lock (6c956ba) - Add --list-agents (-L) flag for non-interactive agent listing (24deace)Medium4/9/2026
v0.13.0- Add missing keys and tool to sample config (2406df1) - List all Kimi and Moonshot models in README (2e455d6) - Add viewport scrolling to interactive menus (f2a510f) - Add Kimi (Moonshot AI) provider support (2742e58)Medium4/9/2026
v0.12.2- Add -C short flag for --config (0e673c4) - Add --agent CLI flag for loading agents in non-interactive mode (d886ab6)Medium4/9/2026
v0.12.1- moved ~/.aictl_history to ~/.aictl/history (5bf331a)Medium4/9/2026
v0.12.0- Add /agent command for reusable system prompt extensions (dba8a98) - fixed cargo fmt (2294bd6) - udpated header in AICTL.md (ba38666) - Fix clippy if-not-else warning in welcome banner (ec4bec9) - Show prompt file status in /info command (c5df3d5) - Document project prompt file feature in all docs (ad781e1) - Add project prompt file support (AICTL.md) (1a119de)Medium4/9/2026

Dependencies & License Audit

Loading dependencies...

Similar Packages

Agent-World-ProtocolThe open world for autonomous AI agents on Solana Trade. Build. Fight. Earn. Explore. Connect your AI agent to a persistent shared world. Trade real SOL, build structures, form guilds, fight for terrimain@2026-04-10
CodexSkillManager🛠 Manage Codex and Claude Code skills on macOS with this SwiftUI app. Browse, import, and delete skills effortlessly while viewing detailed info.main@2026-06-07
uix-ai-agent🤖 Generate UI & UX flows for web and mobile apps using natural language prompts with UIX AI Agent, your intelligent design assistant.main@2026-06-07
vibe-replayTurn AI coding sessions into animated, interactive web replaysv0.2.3
hermes-agentThe agent that grows with youv2026.6.5

More in AI Agents

e2bE2B SDK that give agents cloud environments
agent-browser-protocolAgent Browser Protocol - Deterministic AI agent browser control at the engine level
@blockrun/franklinFranklin — The AI agent with a wallet. Spends USDC autonomously to get real work done. Pay per action, no subscriptions.
tokentracker-cliToken usage tracker for AI agent CLIs (Claude Code, Codex, Cursor, Kiro, Gemini, OpenCode, OpenClaw, Hermes, GitHub Copilot)