Metadata-Version: 2.4
Name: nanoinfra
Version: 0.4.0
Summary: A lightweight personal AI assistant framework
Project-URL: Homepage, https://github.com/bet0x/nanoinfra
Project-URL: Repository, https://github.com/bet0x/nanoinfra
Project-URL: Issues, https://github.com/bet0x/nanoinfra/issues
Project-URL: Changelog, https://github.com/bet0x/nanoinfra/blob/main/docs/release-archive.md
Author: Xubin Ren, the nanobot contributors, Alberto Ferrer
License: MIT
License-File: LICENSE
License-File: THIRD_PARTY_NOTICES.md
Keywords: agent,ai,chatbot
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Python: >=3.11
Requires-Dist: anthropic<1.0.0,>=0.100.0
Requires-Dist: chardet<6.0.0,>=3.0.2
Requires-Dist: croniter<7.0.0,>=6.0.0
Requires-Dist: ddgs<10.0.0,>=9.5.5
Requires-Dist: defusedxml<1.0.0,>=0.7.1
Requires-Dist: dulwich<1.0.0,>=0.22.0
Requires-Dist: filelock>=3.25.2
Requires-Dist: httpx<1.0.0,>=0.28.0
Requires-Dist: jinja2<4.0.0,>=3.1.0
Requires-Dist: json-repair<1.0.0,>=0.57.0
Requires-Dist: loguru<1.0.0,>=0.7.3
Requires-Dist: lxml-html-clean<1.0.0,>=0.4.0
Requires-Dist: mcp<2.0.0,>=1.26.0
Requires-Dist: oauth-cli-kit<1.0.0,>=0.1.6
Requires-Dist: openai>=2.8.0
Requires-Dist: openpyxl<4.0.0,>=3.1.0
Requires-Dist: packaging>=24.0
Requires-Dist: prompt-toolkit<4.0.0,>=3.0.50
Requires-Dist: pydantic-settings<3.0.0,>=2.12.0
Requires-Dist: pydantic<3.0.0,>=2.12.0
Requires-Dist: pypdf<6.0.0,>=5.0.0
Requires-Dist: pytest-playwright>=0.8.0
Requires-Dist: python-docx<2.0.0,>=1.1.0
Requires-Dist: python-pptx<2.0.0,>=1.0.0
Requires-Dist: pyyaml<7.0.0,>=6.0
Requires-Dist: questionary<3.0.0,>=2.0.0
Requires-Dist: readability-lxml<1.0.0,>=0.8.4
Requires-Dist: rich<15.0.0,>=14.0.0
Requires-Dist: tiktoken<1.0.0,>=0.12.0
Requires-Dist: typer<1.0.0,>=0.20.0
Requires-Dist: tzdata>=2025.2
Requires-Dist: watchfiles<2.0.0,>=1.1.1
Requires-Dist: websocket-client<2.0.0,>=1.9.0
Requires-Dist: websockets<17.0,>=15.0
Provides-Extra: api
Requires-Dist: aiohttp<4.0.0,>=3.9.0; extra == 'api'
Provides-Extra: azure
Requires-Dist: azure-identity<2.0.0,>=1.19.0; extra == 'azure'
Provides-Extra: bedrock
Requires-Dist: boto3>=1.43.0; extra == 'bedrock'
Provides-Extra: dev
Requires-Dist: aiohttp<4.0.0,>=3.9.0; extra == 'dev'
Requires-Dist: basedpyright<2.0.0,>=1.39.0; extra == 'dev'
Requires-Dist: msgpack<2.0.0,>=1.1.0; extra == 'dev'
Requires-Dist: openpyxl<4.0.0,>=3.1.0; extra == 'dev'
Requires-Dist: pymupdf>=1.25.0; extra == 'dev'
Requires-Dist: pypdf<6.0.0,>=5.0.0; extra == 'dev'
Requires-Dist: pytest-asyncio<2.0.0,>=1.3.0; extra == 'dev'
Requires-Dist: pytest-cov<7.0.0,>=6.0.0; extra == 'dev'
Requires-Dist: pytest-xdist<4.0.0,>=3.8.0; extra == 'dev'
Requires-Dist: pytest<10.0.0,>=9.0.0; extra == 'dev'
Requires-Dist: python-docx<2.0.0,>=1.1.0; extra == 'dev'
Requires-Dist: python-pptx<2.0.0,>=1.0.0; extra == 'dev'
Requires-Dist: python-socketio<6.0.0,>=5.16.0; extra == 'dev'
Requires-Dist: ruff>=0.1.0; extra == 'dev'
Provides-Extra: documents
Requires-Dist: defusedxml<1.0.0,>=0.7.1; extra == 'documents'
Requires-Dist: openpyxl<4.0.0,>=3.1.0; extra == 'documents'
Requires-Dist: pypdf<6.0.0,>=5.0.0; extra == 'documents'
Requires-Dist: python-docx<2.0.0,>=1.1.0; extra == 'documents'
Requires-Dist: python-pptx<2.0.0,>=1.0.0; extra == 'documents'
Provides-Extra: langfuse
Requires-Dist: langfuse<4.0.0,>=3.0.0; extra == 'langfuse'
Provides-Extra: olostep
Requires-Dist: olostep>=0.1.0; (python_version < '3.14') and extra == 'olostep'
Provides-Extra: pdf
Requires-Dist: pypdf<6.0.0,>=5.0.0; extra == 'pdf'
Description-Content-Type: text/markdown

<picture>
  <source media="(prefers-color-scheme: dark)" srcset="./images/readme-cover-dark.svg">
  <img alt="nanoinfra README cover" src="./images/readme-cover-light.svg">
</picture>

<div align="center">
  <p>
    <a href="https://github.com/bet0x/nanoinfra"><img src="https://img.shields.io/github/stars/bet0x/nanoinfra?style=flat&logo=github" alt="GitHub stars"></a>
    <a href="https://pypi.org/project/nanoinfra/"><img src="https://img.shields.io/pypi/v/nanoinfra" alt="PyPI version"></a>
    <a href="https://github.com/bet0x/nanoinfra/actions/workflows/ci.yml"><img src="https://github.com/bet0x/nanoinfra/actions/workflows/ci.yml/badge.svg?branch=main" alt="Test Suite"></a>
    <a href="https://pypi.org/project/nanoinfra/"><img src="https://img.shields.io/badge/python-%3E%3D3.11-blue" alt="Python 3.11 or newer"></a>
    <a href="https://github.com/bet0x/nanoinfra/blob/main/LICENSE"><img src="https://img.shields.io/github/license/bet0x/nanoinfra" alt="MIT License"></a>
  </p>
  <p>
    <a href="https://github.com/bet0x/nanoinfra/blob/main/COMMUNICATION.md">GitHub / Email</a>
  </p>
</div>

# nanoinfra

🐈 **nanoinfra** is an ultra-lightweight, open-source, self-hosted personal AI agent framework written in Python. It runs in a WebUI, terminal, or chat apps and combines tools, long-term memory, MCP integrations, model routing, multi-agent delegation, scheduled automation, and an OpenAI-compatible API in a small, readable core.

Full docs, install instructions, and guides: see the [GitHub repository](https://github.com/bet0x/nanoinfra).
