Install
$ agentstack add mcp-belingud-yaicli ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
YAICLI: Your AI assistant in command line.
[](https://pypi.org/project/yaicli/)
YAICLI is a powerful yet lightweight command-line AI assistant that brings the capabilities of Large Language Models ( LLMs) like GPT-5 directly to your terminal. Interact with AI through multiple modes: have natural conversations, generate and execute shell commands, or get quick answers without leaving your workflow.
Supports both standard and deep reasoning models across all major LLM providers.
> [!NOTE] > YAICLI is actively developed. While core functionality is stable, some features may evolve in future releases.
> We support MCP since v0.7.0! > > We support Function Call since v0.5.0!
✨ Key Features
🔄 Multiple Interaction Modes
- 💬 Chat Mode: Engage in persistent conversations with full context tracking
- 🚀 Execute Mode: Generate and safely run OS-specific shell commands
- ⚡ Quick Query: Get instant answers without entering interactive mode
🧠 Smart Environment Awareness
- Auto-detection: Identifies your shell (bash/zsh/PowerShell/CMD) and OS
- Safe Command Execution: Verification before running any command
- Flexible Input: Pipe content directly (
cat log.txt | ai "analyze this")
🖼️ Image Input (Vision)
- Local Images: Pass local image files with
--image/-i(JPEG, PNG, GIF, WebP) - URL Images: Pass image URLs directly to vision-capable models
- Multi-Image: Specify
--imagemultiple times for comparison tasks - 30+ Providers: Automatic format conversion for OpenAI, Anthropic, Gemini, Ollama families
🔌 Universal LLM Compatibility
- OpenAI-Compatible: Works with any OpenAI-compatible API endpoint
- Multi-Provider Support: Support multiple providers
💻 Enhanced Terminal Experience
- Real-time Streaming: See responses as they're generated with cursor animation
- Rich History Management: Manage histories with 500 entries by default
- Syntax Highlighting: Beautiful code formatting with customizable themes
🛠️ Developer-Friendly
- Layered Configuration: Environment variables > Config file > Sensible defaults
- Debugging Tools: Verbose mode with detailed API tracing
📚 Function Calling & MCP
- Function Calling: Enable function/MCP calling in API requests
- Function Output: Show the output of functions/MCP
- Tool Confirmation: Confirm each tool call before execution — allow once, for the session, permanently, or deny
Full document: https://belingud.github.io/yaicli/
📦 Installation
Prerequisites
- Python 3.10 or higher
Quick Install
# Using pip (recommended for most users)
pip install yaicli
# Using pipx (isolated environment)
pipx install yaicli
# Using uv (faster installation)
uv tool install yaicli
Yaicli has several optional dependencies group, you can copy below commands to install specific dependencies.
# install all denpendencies
pip install 'yaicli[all]'
# install with specific provider support
pip instsall 'yaicli[ollama,cohere,doubao,huggingface,gemini,mistral,anthropic]'
Install by uv.
# install all denpendencies
uv tool install 'yaicli[all]'
# install with specific provider support
uv tool instsall 'yaicli[ollama,cohere,doubao,huggingface,gemini,mistral,anthropic]'
Install from Source
git clone https://github.com/belingud/yaicli.git
cd yaicli
pip install .
Buildin Supported Providers
- AI21
- Anthropic/Claude
- Anthropic Bedrock
- Anthropic Vertex
- Cerebras
- Chatglm
- Chuts
- Cohere
- Cohere Badrock
- Cohere Sagemaker
- Deepseek
- Doubao
- Fireworks
- Gemini
- Groq
- Huggingface
- Longcat
- Longcat Anthropic Format
- Minimax
- Mistral
- ModelScope
- Ollama
- Openai
- Openai Azure
- Sambanova
- Siliconflow
- Spark
- Targon
- Together
- Vertex ai
- X AI
- Yi
- Unlimited OpenAI-compatible providers
⚙️ Configuration
YAICLI uses a simple configuration file to store your preferences and API keys.
First-time Setup
- Run
aionce to generate the default configuration file - Edit
~/.config/yaicli/config.inito add your API key - Customize other settings as needed
Configuration File Structure
The default configuration file is located at ~/.config/yaicli/config.ini. You can use ai --template to see default
Configuration Options Reference
| Option | Description | Default | Env Variable | | ---------------------- | ------------------------------------------- | ------------------------ | -------------------------- | | PROVIDER | LLM provider (openai, claude, cohere, etc.) | openai | YAI_PROVIDER | | BASE_URL | API endpoint URL | - | YAI_BASE_URL | | API_KEY | Your API key | - | YAI_API_KEY | | MODEL | LLM model to use | gpt-5.2 | YAI_MODEL | | DEFAULT_ROLE | Default role | DEFAULT | YAI_DEFAULT_ROLE | | SHELL_NAME | Shell type | auto | YAI_SHELL_NAME | | OS_NAME | Operating system | auto | YAI_OS_NAME | | STREAM | Enable streaming | true | YAI_STREAM | | TIMEOUT | API timeout (seconds) | 60 | YAI_TIMEOUT | | EXTRA_HEADERS | Extra headers | - | YAI_EXTRA_HEADERS | | EXTRA_BODY | Extra body | - | YAI_EXTRA_BODY | | REASONING_EFFORT | Reasoning effort | - | YAI_REASONING_EFFORT | | INTERACTIVE_ROUND | Interactive mode rounds | 25 | YAI_INTERACTIVE_ROUND | | CODE_THEME | Syntax highlighting theme | monokai | YAI_CODE_THEME | | TEMPERATURE | Response randomness | 0.7 | YAI_TEMPERATURE | | FREQUENCY_PENALTY | Repeat pubnish | 0.0 | YAI_FREQUENCY_PENALTY | | TOP_P | Top-p sampling | 1.0 | YAI_TOP_P | | MAX_TOKENS | Max response tokens | 1024 | YAI_MAX_TOKENS | | MAX_HISTORY | Max history entries | 500 | YAI_MAX_HISTORY | | AUTO_SUGGEST | Enable history suggestions | true | YAI_AUTO_SUGGEST | | SHOW_REASONING | Enable reasoning display | true | YAI_SHOW_REASONING | | JUSTIFY | Text alignment | default | YAI_JUSTIFY | | CHAT_HISTORY_DIR | Chat history directory | /yaicli/chats | YAI_CHAT_HISTORY_DIR | | MAX_SAVED_CHATS | Max saved chats | 20 | YAI_MAX_SAVED_CHATS | | ROLE_MODIFY_WARNING | Warn user when modifying role | true | YAI_ROLE_MODIFY_WARNING | | ENABLE_FUNCTIONS | Enable function calling | true | YAI_ENABLE_FUNCTIONS | | SHOW_FUNCTION_OUTPUT | Show function output when calling function | true | YAI_SHOW_FUNCTION_OUTPUT | | ENABLE_MCP | Enable MCP tools | false | YAI_ENABLE_MCP | | SHOW_MCP_OUTPUT | Show MCP output when calling mcp | true | YAI_SHOW_MCP_OUTPUT | | MAX_TOOL_CALL_DEPTH | Max tool calls in one request | 8 | YAI_MAX_TOOL_CALL_DEPTH | | TOOL_CONFIRM | Confirm each tool call before running it | true | YAI_TOOL_CONFIRM |
> Tool execution confirmation: With TOOL_CONFIRM enabled (the default), YAICLI asks before running each > tool/function call. At the prompt you can allow it once, allow it for the rest of the session, allow it permanently, > or deny it. Permanent approvals are stored per tool name in ~/.config/yaicli/tool_permissions.json. Set > TOOL_CONFIRM=false (or YAI_TOOL_CONFIRM=false) to run tool calls silently, as in previous versions. In > non-interactive sessions (e.g. piped input) only tools already in the permissions file run; others are denied.
LLM Provider Configuration
YAICLI works with major LLM providers. The default configuration is set up for OpenAI, but you can easily switch to other providers.
Note: blank BASE_URL (or no BASE_URL) means use provider default url.
Pre-configured Provider Settings
| Provider | BASE_URL | | ------------------------------ | --------------------------------------------------------- | | OpenAI (default) | https://api.openai.com/v1 | | Claude (native API) | https://api.anthropic.com/v1 | | Claude (OpenAI-compatible) | https://api.anthropic.com/v1/openai | | Cohere | https://api.cohere.com | | Gemini | https://generativelanguage.googleapis.com/v1beta/openai |
> Note: Many providers offer OpenAI-compatible endpoints that work with the default settings. > > - Google Gemini: https://ai.google.dev/gemini-api/docs/openai > - Claude: https://docs.anthropic.com/en/api/openai-sdk
If you not sure about baseurl or just use the default provider baseurl, just leave it blank or delete BASE_URL.
[core]
PROVIDER=cohere
BASE_URL=
API_KEY=xxx
MODEL=command-r-plus
Openai
Yaicli use openai as provider as default provider, gpt-5.2 as default model, you can add your api key to use as it is.
PROVIDER=openai
BASE_URL=
API_KEY=
MODEL=gpt-5.2
Extra params:
# REASONING_EFFORT: [high, midium, low]
REASONING_EFFORT=
See official for more details: https://platform.openai.com/docs/guides/reasoning?api-mode=chat
Openai Azure
PROVIDER=openai-azure
BASE_URL=
API_KEY=
MODEL=gpt-5.2
Support config keys:
AZURE_AD_TOKEN=
AZURE_ENDPOINT=
AZURE_DEPLOYMENT=
API_VERSION=
Support environment variables:
AZURE_OPENAI_API_KEY=
AZURE_OPENAI_AD_TOKEN=
AZURE_OPENAI_ENDPOINT=
If API_KEY not set in config, will look for AZURE_OPENAI_API_KEY environment variable.
If AZURE_AD_TOKEN not set in config, will look for AZURE_OPENAI_AD_TOKEN environment variable.
If BASE_URL and AZURE_ENDPOINT not set in config, will look for AZURE_OPENAI_ENDPOINT environment variable.
Anghropic/Claude
PROVIDER=anthropic
API_KEY=
MODEL=claude-sonnet-4-20250514
If you want to access Anthropic bedrock, you need to set AWS_SECRET_ACCESS_KEY, AWS_ACCESS_KEY_ID, AWS_SESSION_TOKEN and AWS_REGION in config or environment variables.
PROVIDER=anthropic-bedrock
AWS_SECRET_ACCESS_KEY=
AWS_ACCESS_KEY_ID=
AWS_SESSION_TOKEN=
AWS_REGION=
MODEL=anthropic.claude-opus-4-20250514-v1:0
Support ANTHROPIC_BEDROCK_BASE_URL env or BASE_URL in config file, with same effect.
Also support Anthropic vertex with key PROJECT_ID and CLOUD_ML_REGION in config or environment variables.
PROVIDER=anthropic-vertex
PROJECT_ID=
CLOUD_ML_REGION=
You can set anthropic base url by ANTHROPIC_VERTEX_BASE_URL env, or set BASE_URL in config file, same effect.
Deepseek
PROVIDER=deepseek
API_KEY=
MODEL=deepseek-chat
Thinking mode can be controlled with the existing EXTRA_BODY and REASONING_EFFORT settings. DeepSeek enables thinking by default for supported thinking models, so this is only needed when you want to be explicit or set effort:
PROVIDER=deepseek
API_KEY=
MODEL=deepseek-v4-pro
REASONING_EFFORT=high
EXTRA_BODY={"thinking":{"type":"enabled"}}
To disable thinking mode:
EXTRA_BODY={"thinking":{"type":"disabled"}}
When thinking mode is enabled, DeepSeek returns reasoning_content, which YAICLI displays as reasoning output and preserves during live tool-call conversations. DeepSeek ignores temperature, top_p, presence_penalty, and frequency_penalty while thinking is enabled.
OpenRouter
PROVIDER=openrouter
API_KEY=
MODEL=deepseek/deepseek-chat-v3-0324
Mistral
PROVIDER=mistral
API_KEY=
MODEL=codestral-latest
Gemini
Basic config:
PROVIDER=gemini
API_KEY=
MODEL=gemini-2.5-flash
Extra params:
TOP_K=
PRESENCE_PENALTY=
FREQUENCY_PENALTY=
SEED=
THINKING_BUDGET=
API_VERSION=
BASE_URL=
Vertex AI
PROVIDER=vertexai
MODEL=gemini-2.5-flash
PROJECT=
LOCATION=
Huggingface
Default HF_PROVIDER is auto.
HF_PROVIDER=auto
PROVIDER=huggingface
API_KEY=
MODEL=deepseek-ai/DeepSeek-R1-0528
See official docs for HF_PROVIDER: https://huggingface.co/docs/inference-providers/index
Groq
PROVIDER=groq
API_KEY=
MODEL=llama-3.3-70b-versatile
LongCat
PROVIDER=longcat
API_KEY=
MODEL=LongCat-Flash-Chat
BASE_URL=https://api.longcat.chat/openai
XAI
PROVIDER=xai
API_KEY=
MODEL=grok-3
Minimax
PROVIDER=minimax
API_KEY=
MODEL=MiniMax-M2.1
Extra params:
# Enable/disable interleaved thinking (default: true)
MINIMAX_REASONING_SPLIT=true
MiniMax-M2.1 supports Interleaved Thinking - the model can reason before each tool use. When enabled, reasoning content is preserved in conversation history and displayed alongside responses.
Chatglm
PROVIDER=chatglm
API_KEY=
MODEL=glm-4-plus
Extra params:
Check offcial docs: https://bigmodel.cn/dev/api/normal-model/glm-4
# true or false
DO_SAMPLE=
Chutes
PROVIDER=chutes
API_KEY=
MODEL=deepseek-ai/DeepSeek-V3-0324
Cerebras
PROVIDER=cerebras
API_KEY=
MODEL=llama3.3-70b
AI21
PROVIDER=ai21
API_KEY=
MODEL=jamba-large-1.6
Sambanova
PROVIDER=sambanova
API_KEY=
MODEL=DeepSeek-V3-0324
Only a few models support tool call as below:
- Meta-Llama-3.1-8B-Instruct
- Meta-Llama-3.1-405B-Instruct
- Meta-Llama-3.3-70B-Instruct
- Llama-4-Scout-17B-16E-Instruct
- DeepSeek-V3-0324
See official docs for more detail: https://docs.sambanova.ai/cloud/docs/capabilities/function-calling
ModelScope
PROVIDER=modelscope
API_KEY=
MODEL=deepseek-ai/DeepSeek-V3-0324
Inifiniai
PROVIDER=infiniai
; BASE_URL=https://cloud.infini-ai.com/maas/v1
API_KEY=
MODEL=deepseek-v3
Siliconflow
PROVIDER=siliconflow
API_KEY=
MODEL=Qwen/Qwen3-32B
Yi
PROVIDER=yi
API_KEY=
MODEL=yi-lightning
Cohere
You have to install cohere dependencies, pip install 'yaicli[cohere]'
PROVIDER=cohere
API_KEY=
MODEL=command-a-03-2025
Check official docs: https://docs.cohere.com/docs/text-gen-quickstart
Support keys:
ENVIRONMENT=
For private deploy and Azure api, you need to set BASE_URL.
PROVIDER=cohere
API_KEY=
MODEL=command-a-03-2025
BASE_URL=
For Bedr
…
Source & license
This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: belingud
- Source: belingud/yaicli
- License: Apache-2.0
- Homepage: https://belingud.github.io/yaicli/
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.