Skip to main content

Janito — AI Coding Agent

Janito is an AI Coding Agent with tools, MCP, and skills.

Console vs Web

📖 Full documentation available at https://joaompinto.github.io/janito/

⚠️ Disclaimer: The code on this repo has been developed mostly using AI.

Features

  • 🔧 Function Calling - Built-in tools for file operations, web search, and more
  • 🔌 Plugins - Gmail, code search, OneDrive, and more via the plugin system
  • 🔌 MCP Support - Connect to Model Context Protocol servers
  • 🧩 Skills - Install and use task-specific skills from GitHub
  • 🌐 Web UI (Alpha) - Chat through a browser instead of the terminal with --web
  • 🔌 Agent Client Protocol (ACP) - Run as an ACP v1 subprocess agent for editors like Zed with --acp
  • ↪️ Session Resume - Exit a terminal chat and reopen it with janito -C (full conversation restored)
  • 📊 Real-time Progress - Watch tool execution progress as it happens
  • 🚀 Easy Setup - Interactive configuration with --config or quick setup with --set flags
  • 🔗 OpenAI-Compatible & Native APIs - Works with any OpenAI-compatible endpoint (OpenAI, LM Studio, Ollama, custom) and native SDKs (Anthropic, DashScope)

NOTE: Janito should be used on development systems on which data loss is tolerable and there are no critical secrets

Quick Start

# Install
pip install janito

# Or, with uv (recommended)
uv tool install janito

# Configure interactively
janito --config

# Or set options directly (two steps: config, then API key or ChatGPT login)
janito --set provider=openai --set model=gpt-6.1-sol
janito --set-api-key="sk-your-key" --provider openai
# ...or sign in with your ChatGPT plan instead of an API key:
# janito --provider openai --login

# Start chatting
janito "Hello!"

Installation

From PyPI

pip install janito

Or, with uv:

uv tool install janito

For development setup, see README_DEV.md.

Configuration

Interactive Setup

janito --config

You'll be prompted for:

  • Provider - openai or custom
  • API Key - Masked for security
  • Model - e.g., gpt-6.1-sol
  • Max Output Tokens - Maximum output tokens (default: 65536)
  • Max Input Tokens - Maximum input tokens / context window (default: 128000)

Quick Configuration with --set

Set options directly from the command line:

# Single key-value
janito --set model=gpt-6.1-sol

You can also use --get, --unset, and --set-secret with multiple values.

View Configuration

janito --show-config

Costs per provider

Provider Last Model Price
Alibaba qwen3.8-flash Pay as you go
Moonshot kimi-k3 $15/month (Moderato)
z.ai glm-5.3-flash $12.6/month (Lite)
openai gpt-6.1-sol Pay as you go / ChatGPT plan (OAuth)

For custom endpoints (base-url), see README_custom.md.

Usage

Single Prompt

janito "What is the capital of France?"

Pipe Input

echo "Tell me a joke" | janito

Interactive Chat

janito

Commands in chat mode:

  • /exit - End the session
  • clear - Clear conversation and start a new one
  • Ctrl+D / Ctrl+Z then Enter - Exit (EOF)
  • /help - List all commands (with descriptions) and shortcuts

Web UI (Alpha)

⚠️ Alpha — The --web mode is currently in alpha. It works, but the interface, CLI flags, and API may change between releases.

Janito can serve a browser-based chat interface instead of the terminal. This requires optional dependencies that are not part of the core install:

# Install with the web extra
pip install janito[web]
# or
uv tool install janito[web]

Then start the server (opens your browser automatically):

janito --web

# All normal Janito flags still apply, plus web-specific ones:
janito --web -r -w --web-port 9090    # privileges + web, custom port
janito --web --no-web-open                      # don't auto-open the browser

The server binds to 127.0.0.1 by default (localhost only). For full details (features, security, API endpoints, architecture), see the Web UI documentation.

System Prompt Options

Control how the system prompt is handled:

# Use default system prompt (with tools enabled)
janito "What can you do?"

# Disable system prompt entirely (no tools at all)
janito -Z "Simple prompt without system context"

# Override with a custom system prompt (tools stay enabled)
janito -S "You are a concise coding assistant" "Explain recursion"

# Keep the system prompt but skip tool loading (skill tools stay enabled)
janito --no-tools "Explain recursion"

# Skip only the parallel-tasks toolset (StartTask/StopTask/WaitForTask/ListTasks)
janito --no-tasks "Refactor this file"
Flag Description
-Z, --no-system-prompt Skip system prompt and disable tools
-S, --system-prompt Custom system prompt
--no-tools Do not load tools (skill tools stay enabled)
--no-tasks Do not load the tasks toolset (StartTask, StopTask, WaitForTask, ListTasks); all other tools stay enabled

Note: When using -Z, built-in tools (file operations, MCP) are disabled. Use the default mode or -S flag when you need tool access.

Note: --no-tools disables loading of all non-skill tools (file operations, MCP) while keeping the skill tools (load_skill, read_skill_resource) available, so the model can still load installed skills on demand.

Note: --no-tasks disables only the tasks toolset (the StartTask / StopTask / WaitForTask / ListTasks tools that spawn parallel child processes). File, system, net and skill tools stay available.

Logging

janito --log=info "Your prompt"      # Info level
janito --log=debug "Your prompt"     # Debug level
janito --log=info,debug "Your prompt" # Multiple levels

Examples

OpenAI

# Step 1: Set provider and model
janito --set provider=openai --set model=gpt-6.1-sol
# Step 2a: Store API key (pay as you go)
janito --set-api-key="sk-your-key" --provider openai
# ...or step 2b: sign in with ChatGPT (OAuth, no API key)
# janito --provider openai --login

# Then run any prompt
janito "Explain quantum computing"

Alibaba (Qwen)

# Step 1: Set provider and model
janito --set provider=alibaba --set model=qwen3.8-flash
# Step 2: Store API key
janito --set-api-key="your-dashscope-api-key" --provider alibaba

# Then run any prompt
janito "Explain quantum computing"

Custom Endpoint

janito --set provider=custom --set base-url=http://localhost:8000/v1

Built-in Tools

janito includes tools for common tasks:

File Operations

# List files
python -m janito.tools.files.list_files . --recursive --pattern "*.py"

# Read file
python -m janito.tools.files.read_file README.md --max-lines 20

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 or Enter)

Dependencies

  • Python 3.10+
  • openai>=1.0.0
  • rich>=10.0.0
  • prompt-toolkit>=3.0.0
  • requests>=2.28.0 (for MCP support)
  • pathspec>=0.11.0 (for .gitignore-aware file listing)
  • questionary>=2.1.1 (for the interactive --config wizard)

Optional extras: janito[web] adds fastapi/uvicorn (for --web); the native API types need anthropic (--api-type Anthropic), dashscope (DashScope) or google-genai (Gemini).

License

MIT License

Metadata

Release files for janito 4.48.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for janito 4.48.0
File Size Uploaded
janito-4.48.0.tar.gz 1.2 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for janito 4.48.0
File Interpreter ABI Platform
janito-4.48.0-py3-none-any.whl Python 3 none any Details

Total release size: 1.9 MB

Release files / janito-4.48.0.tar.gz

Download URL janito-4.48.0.tar.gz
Size 1.2 MB
Tags Source
SHA-256 checksum
How to use checksums
375f5fd77a73cbe96ba663efbe983a3977cd5f8264d2fac83547e2329d3e8807
BLAKE2b-256 checksum
How to use checksums
a3efd1822272faecb8c79378f0b1fd0cafbeb45467b87ad8206a227ca329c161
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.

Transparency log

Release files / janito-4.48.0-py3-none-any.whl

Download URL janito-4.48.0-py3-none-any.whl
Size 700.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b30749f14655dfd58a2c0c87aa732bb03945412eb54ad89bf1dfbb4b5570e11b
BLAKE2b-256 checksum
How to use checksums
7c6fd62dd0b25e90ec4015bd87499d1313f5ff36d6e1965182352e6b9a4b19d3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.

Transparency log

Release history Release notifications | RSS feed

4.50.0

2 release files

4.49.0

2 release files

This release

4.48.0 This release

2 release files

4.47.0

2 release files

4.45.0

2 release files

4.44.0

2 release files

4.43.0

2 release files

4.42.0

2 release files

4.41.0

2 release files

4.40.0

2 release files

4.35.0

2 release files

4.34.0

2 release files

4.33.0

2 release files

4.32.0

2 release files

4.31.0

2 release files

4.30.0

2 release files

4.29.0

2 release files

4.28.0

2 release files

4.27.0

2 release files

4.26.0

2 release files

4.25.0

2 release files

4.24.0

2 release files

4.23.0

2 release files

4.22.0

2 release files

4.13.0

2 release files

4.12.0

2 release files

4.11.0

2 release files

4.10.0

2 release files

4.9.0

2 release files

4.8.0

2 release files

4.7.0

2 release files

4.6.0

2 release files

4.5.1

2 release files

4.5.0

2 release files

4.4.0

2 release files

4.3.0

2 release files

4.2.1

2 release files

4.2.0

2 release files

4.1.1

2 release files

4.1.0

2 release files

4.0.0

2 release files

3.22.0

2 release files

3.21.0

2 release files

3.19.0

2 release files

3.16.1

2 release files

3.16.0

2 release files

3.15.1

2 release files

3.15.0

2 release files

3.14.2

2 release files

3.14.1

2 release files

3.14.0

2 release files

3.13.3

2 release files

3.13.2

2 release files

3.13.0

2 release files

3.12.3

2 release files

3.12.2

2 release files

3.12.1

2 release files

3.12.0

2 release files

3.11.1

2 release files

3.11.0

2 release files

3.9.0

2 release files

3.8.0

2 release files

3.7.0

2 release files

3.6.1

2 release files

3.5.1

2 release files

3.5.0

2 release files

3.4.0

2 release files

3.3.0

2 release files

3.2.0

2 release files

3.1.0

2 release files

3.0.0

2 release files

2.33.0

2 release files

2.32.0

2 release files

2.31.1

2 release files

2.31.0

2 release files

2.30.0

2 release files

2.29.0

2 release files

2.28.0

2 release files

2.27.1

2 release files

2.27.0

2 release files

2.26.0

2 release files

2.25.0

2 release files

2.24.1

2 release files

2.24.0

2 release files

2.22.0

2 release files

2.21.0

2 release files

2.20.1

2 release files

2.20.0

2 release files

2.9.0

2 release files

2.8.0

2 release files

2.7.0

2 release files

2.6.1

2 release files

2.6.0

2 release files

2.5.1

2 release files

2.5.0

2 release files

2.4.0

2 release files

2.3.1

2 release files

2.3.0

2 release files

2.2.0

2 release files

2.1.1

2 release files

2.1.0

2 release files

2.0.1

2 release files

2.0.0

2 release files

1.14.3

2 release files

1.14.2

2 release files

1.14.1

2 release files

1.14.0

2 release files

1.13.1

2 release files

1.13.0

2 release files

1.12.2

2 release files

1.12.1

2 release files

1.11.1

2 release files

1.11.0

2 release files

1.9.0

2 release files

1.8.1

1 release file

1.8.0

2 release files

1.7.0

2 release files

1.6.0

2 release files

1.5.2

2 release files

1.5.1

2 release files

1.5.0

2 release files

1.4.1

2 release files

1.4.0

2 release files

1.3.2

2 release files

1.3.1

2 release files

1.3.0

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.15.0

2 release files

0.14.0

2 release files

0.13.0

2 release files

0.12.0

2 release files

0.11.0

2 release files

0.10.1

2 release files

0.10.0

2 release files

0.9.0

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page