Skip to main content

The AI agent that flies on its own. Two commands to fly.

Project description

🪶 Qanot AI

The AI agent that flies on its own.
Two commands to fly.

PyPI Python 3.11+ License Stars

Docs · O'zbekcha · Website · Telegram

Qanot (Uzbek for "wing") — lightweight Python framework for AI-powered Telegram agents with memory, tools, RAG, multi-agent delegation, and multi-provider failover. All out of the box.


Quick Start

pip install qanot
qanot init        # Interactive setup — picks provider, model, starts bot

That's it. The wizard configures everything and auto-starts your bot.


What Makes Qanot Different

Agent Loop — Up to 25 tool-use iterations per turn with circuit breaker, result-aware loop detection, and smart error recovery.

3-Tier Model Routing — Routes messages by complexity. "salom" → Haiku ($0.003). "REST API yozib ber" → Opus ($0.029). Saves 50-60% on costs.

Multi-Agent — Agents that talk to each other. Delegate tasks, hold conversations between agents, spawn background workers.

5 Providers — Claude, GPT, Gemini, Groq, Ollama. Automatic failover with smart cooldowns.

3-Tier Memory — WAL captures real-time corrections. Daily notes log conversations. Long-term memory persists in MEMORY.md. Agent evolves its own SOUL.md over time.

RAG — Hybrid search (vector + FTS5) with FastEmbed CPU embedder. No GPU needed.

Voice — 4 providers (Muxlisa, KotibAI, Aisha, Whisper). STT + TTS. Uzbek native.

Streaming — Native Telegram sendMessageDraft (Bot API 9.5). Real-time, not edit-message hack.

115+ Plugin Tools — amoCRM (34), Bitrix24 (30), 1C Enterprise (18), AbsMarket (32). Build your own with @tool decorator.

Security — 3-tier exec security, per-user rate limiting, SSRF protection, safe file writes, SecretRef.


Architecture

User → Telegram → Agent Loop (25 iterations max)
                      ├── Model Router (Haiku / Sonnet / Opus)
                      ├── LLM Provider (Claude / GPT / Gemini / Groq / Ollama)
                      ├── Tool Registry (35+ built-in + 115 plugin tools)
                      ├── Memory (WAL → daily notes → long-term)
                      ├── RAG Engine (FastEmbed + FTS5 hybrid)
                      ├── Voice Pipeline (4 providers)
                      ├── Multi-Agent (delegate / converse / spawn)
                      └── Security (rate limit + exec approval + file jail)

CLI

qanot init                  # Setup wizard
qanot start / stop / restart
qanot status / logs
qanot update                # Self-update from PyPI
qanot doctor --fix          # Health check + auto-repair
qanot config show / set
qanot plugin new <name>     # Scaffold a plugin

Plugins

Ready-made integrations:

Plugin Tools What it does
amoCRM 34 Leads, contacts, companies, tasks, chats, tags, pipelines
Bitrix24 30 Deals, leads, contacts, invoices, quotes, products, tasks
1C Enterprise 18 Contractors, products, sales, purchases, cash, balances
AbsMarket 32 POS sales, purchases, inventory, customers, suppliers + SQL

Build your own:

from qanot.plugins.base import Plugin, tool

class QanotPlugin(Plugin):
    name = "my_plugin"

    @tool("my_tool", "What this tool does")
    async def my_tool(self, params: dict) -> str:
        return '{"result": "done"}'

Docs

English O'zbekcha
Getting Started docs docs
Full Guide docs docs
Configuration docs docs
Tools docs docs
Plugins docs docs
Architecture docs docs
API Reference docs docs

Contributing

git clone https://github.com/QANOT/qanot.git
cd qanot
pip install -e .
python -m pytest tests/ -v   # 757 tests

License

MIT — use it, fork it, build with it.


Built in Tashkent, Uzbekistan 🇺🇿
Qanot means "wing" — giving your agents the wings to fly.

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

qanot-2.0.4.tar.gz (397.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

qanot-2.0.4-py3-none-any.whl (382.0 kB view details)

Uploaded Python 3

File details

Details for the file qanot-2.0.4.tar.gz.

File metadata

  • Download URL: qanot-2.0.4.tar.gz
  • Upload date:
  • Size: 397.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for qanot-2.0.4.tar.gz
Algorithm Hash digest
SHA256 e137135007f4deb220d5f521a145bb0d3d018347f8f7776af8af61c92ce607c2
MD5 80bc3281aad29b883398c85d956b42fd
BLAKE2b-256 e7bee5510377d5a5515acb6f1751379aeac55c73dd7a80fb1cf0c627797b267e

See more details on using hashes here.

File details

Details for the file qanot-2.0.4-py3-none-any.whl.

File metadata

  • Download URL: qanot-2.0.4-py3-none-any.whl
  • Upload date:
  • Size: 382.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for qanot-2.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 3da0bfc335a07b21ad750dc8d6f0f9f5d4dd0572aaf151443365920b9eb6fcb2
MD5 9e436408f170ec969b6236b71583ec20
BLAKE2b-256 96800466829da86bf97b784b2bb286aa45cf2c559ebbd5a96a72f3b0abcc903c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page