OpenAI CLI with Function Calling, MCP Support, and Extensible Tools
Project description
Janito4 - an OpenAI CLI with function calling and MCP
Features
- 🔧 Function Calling - Built-in tools for file operations, web search, and more
- 📧 Gmail Integration - Read, search, and manage emails
- ☁️ OneDrive Integration - Browse, upload, download, and share files
- 🔌 MCP Support - Connect to Model Context Protocol servers
- 📊 Real-time Progress - Watch tool execution progress as it happens
- 🚀 Easy Setup - Interactive configuration with
--configor quick setup with--setflags - 🔗 Any OpenAI-Compatible API - Works with OpenAI, local servers (LM Studio, Ollama), and custom endpoints
Quick Start
# Install
pip install janito4
# Configure interactively
janito4 --config
# Or set options directly
janito4 --set provider=openai --set-api-key="sk-your-key" --set model=gpt-4
# Start chatting
janito4 "Hello!"
Installation
From PyPI
pip install janito4
For development setup, see README_DEV.md.
Configuration
Interactive Setup
janito4 --config
You'll be prompted for:
- Provider -
openai,anthropic,azure, orcustom - API Key - Masked for security
- Model - e.g.,
gpt-4,gpt-3.5-turbo - Context Window - Max tokens (default: 65536)
Quick Configuration with --set
Set options directly from the command line:
# Set the provider
janito4 --set provider=openai
# Set your API key
janito4 --set-api-key="sk-your-key-here"
# Set the model
janito4 --set model=gpt-4
# Combine multiple options
janito4 --set provider=openai --set model=gpt-4 --set-api-key="sk-your-key"
View Configuration
janito4 --show-config
Available Options
| Option | Description | Example |
|---|---|---|
provider |
Provider name | openai, anthropic, azure, custom |
model |
Model name | gpt-4, claude-3-opus |
context-window |
Context window size | 65536 |
For custom endpoints (base-url), see README_LOCAL.md.
Usage
Single Prompt
janito4 "What is the capital of France?"
Pipe Input
echo "Tell me a joke" | janito4
Interactive Chat
janito4
Commands in chat mode:
exit/quit- End sessionrestart- Clear conversation historyCtrl+D/Ctrl+Z- Exit
Logging
janito4 --log=info "Your prompt" # Info level
janito4 --log=debug "Your prompt" # Debug level
janito4 --log=info,debug "Your prompt" # Multiple levels
Examples
OpenAI
janito4 --set provider=openai --set-api-key="sk-your-key" --set model=gpt-4 "Explain quantum computing"
Local LLM (LM Studio, Ollama)
janito4 --set provider=openai --set-api-key="not-needed" --set model="local-model" "What is 2+2?"
Azure OpenAI
janito4 --set provider=azure --set-api-key="your-key" --set model="gpt-4" "Hello"
Built-in Tools
Janito4 includes tools for common tasks:
Email Integration (Gmail)
# Authenticate with Gmail
janito4 --gmail-auth
# Use Gmail in chat mode
janito4 --gmail
# Check emails
janito4 --gmail "Show my unread emails from today"
For full Gmail documentation, see janito4/tools/README.gmail.md.
Cloud Storage (OneDrive)
# Authenticate with Microsoft OneDrive
janito4 --onedrive-auth
# Use OneDrive in chat mode
janito4 --onedrive
# List files
janito4 --onedrive "List my files in Documents"
For full OneDrive documentation, see janito4/tools/README.onedrive.md.
File Operations
# List files
janito4.tools.files.list_files . --recursive --pattern "*.py"
# Read file
janito4.tools.files.read_file README.md --max-lines 20
Web Search
janito4 "Search the web for the latest Python news"
MCP Tools
Connect to MCP servers using the /mcp command inside the interactive shell:
# Add a stdio-based MCP server
/mcp add myserver stdio python -m mcp.server
# Add an HTTP-based MCP server
/mcp add remote http https://api.example.com/mcp
# List configured servers
/mcp list
For full MCP documentation, see README_MCP.md.
Tool Progress Reporting
Tools report progress in real-time:
🔄 Reading files...
📊 Processing: 50/100 files
✅ Completed: 100 files (2.3MB)
Progress messages go to stderr so they don't interfere with tool output.
Error Handling
| Exit Code | Meaning |
|---|---|
0 |
Success |
1 |
Configuration or runtime error |
130 |
User cancelled (Ctrl+C) |
Dependencies
- Python 3.6+
openai>=1.0.0rich>=10.0.0prompt-toolkit>=3.0.0requests(for MCP support)
License
MIT License
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file janito4-0.5.0.tar.gz.
File metadata
- Download URL: janito4-0.5.0.tar.gz
- Upload date:
- Size: 114.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
35f89e8f0234775cb132dd7a86103813ad9c2ab5ea62792e2bff486d30e440a3
|
|
| MD5 |
0974fe0c231bc8101c81db7339ce171e
|
|
| BLAKE2b-256 |
932bc753e47ad14dad629c5b9ebbd134619d29e453fcb60d57cdaf17e7799965
|
File details
Details for the file janito4-0.5.0-py3-none-any.whl.
File metadata
- Download URL: janito4-0.5.0-py3-none-any.whl
- Upload date:
- Size: 164.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c09335b5c27b837c50c4f616b8fd4c97375e0910833280d51eaa2d5888017c7c
|
|
| MD5 |
bb9287731df6992d61e7d54d6a3c5d6f
|
|
| BLAKE2b-256 |
1f6d3da92966dbed3c23a57bbbefcd6256e58806a3f73806bd568ef04a040593
|