{"id":24444560,"url":"https://github.com/upsonic/upsonic","last_synced_at":"2026-04-09T13:03:04.973Z","repository":{"id":251983288,"uuid":"806192576","full_name":"Upsonic/Upsonic","owner":"Upsonic","description":"The most reliable AI agent framework that supports MCP.","archived":false,"fork":false,"pushed_at":"2025-05-01T17:11:21.000Z","size":4205,"stargazers_count":7398,"open_issues_count":44,"forks_count":689,"subscribers_count":56,"default_branch":"master","last_synced_at":"2025-05-01T17:49:53.512Z","etag":null,"topics":["agent","agent-framework","claude","computer-use","llms","mcp","model-context-protocol","openai","rag","reliability"],"latest_commit_sha":null,"homepage":"https://docs.upsonic.ai","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Upsonic.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-05-26T16:23:38.000Z","updated_at":"2025-05-01T17:04:10.000Z","dependencies_parsed_at":"2024-08-07T00:30:46.257Z","dependency_job_id":"f4136d83-d751-4bd9-8ca5-7454f9e2e167","html_url":"https://github.com/Upsonic/Upsonic","commit_stats":null,"previous_names":["upsonic/gpt-computer-assistant","upsonic/upsonic"],"tags_count":216,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Upsonic%2FUpsonic","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Upsonic%2FUpsonic/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Upsonic%2FUpsonic/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Upsonic%2FUpsonic/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Upsonic","download_url":"https://codeload.github.com/Upsonic/Upsonic/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252882600,"owners_count":21819151,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent","agent-framework","claude","computer-use","llms","mcp","model-context-protocol","openai","rag","reliability"],"created_at":"2025-01-20T22:56:32.252Z","updated_at":"2026-03-18T02:08:27.637Z","avatar_url":"https://github.com/Upsonic.png","language":"Python","readme":"\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"https://github.com/user-attachments/assets/fbe7219f-55bc-4748-ac4a-dd2fb2b8d9e5\" width=\"600\" /\u003e\n\n# Upsonic\n\n**Production-Ready AI Agent Framework with Safety First**\n\n[![PyPI version](https://badge.fury.io/py/upsonic.svg)](https://badge.fury.io/py/upsonic)\n[![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENCE)\n[![Python Version](https://img.shields.io/pypi/pyversions/upsonic.svg)](https://pypi.org/project/upsonic/)\n[![GitHub stars](https://img.shields.io/github/stars/Upsonic/Upsonic.svg?style=social\u0026label=Star)](https://github.com/Upsonic/Upsonic)\n[![GitHub issues](https://img.shields.io/github/issues/Upsonic/Upsonic.svg)](https://github.com/Upsonic/Upsonic/issues)\n[![Documentation](https://img.shields.io/badge/docs-upsonic.ai-brightgreen.svg)](https://docs.upsonic.ai)\n[![Discord](https://img.shields.io/badge/Discord-Join%20Community-5865F2?style=for-the-badge\u0026logo=discord\u0026logoColor=white)](https://discord.gg/pmYDMSQHqY)\n\n[Documentation](https://docs.upsonic.ai) • [Quickstart](https://docs.upsonic.ai/get-started/quickstart) • [Examples](https://docs.upsonic.ai/examples) • [Discord](https://discord.gg/pmYDMSQHqY)\n\n\u003c/div\u003e\n\n---\n\n## Overview\n\nUpsonic is an open-source AI agent framework for building production-ready agents. It supports multiple AI providers (OpenAI, Anthropic, Azure, Bedrock) and includes built-in safety policies, OCR, memory, multi-agent coordination, and MCP tool integration.\n\n## What Can You Build?\n\n- **Document Analysis**: Extract and process text from images and PDFs\n- **Customer Service Automation**: Agents with memory and session context\n- **Financial Analysis**: Agents that analyze data, generate reports, and provide insights\n- **Compliance Monitoring**: Enforce safety policies across all agent interactions\n- **Research \u0026 Data Gathering**: Automate research workflows with multi-agent collaboration\n- **Multi-Agent Workflows**: Orchestrate tasks across specialized agent teams\n\n## Quick Start\n\n### Installation\n\n```bash\nuv pip install upsonic\n# pip install upsonic\n```\n\n### Basic Agent\n\n```python\nfrom upsonic import Agent, Task\n\nagent = Agent(model=\"anthropic/claude-sonnet-4-5\", name=\"Stock Analyst Agent\")\n\ntask = Task(description=\"Analyze the current market trends\")\n\nagent.print_do(task)\n```\n\n### Agent with Tools\n\n```python\nfrom upsonic import Agent, Task\nfrom upsonic.tools.common_tools import YFinanceTools\n\nagent = Agent(model=\"anthropic/claude-sonnet-4-5\", name=\"Stock Analyst Agent\")\n\ntask = Task(\n    description=\"Give me a summary about tesla stock with tesla car models\",\n    tools=[YFinanceTools()]\n)\n\nagent.print_do(task)\n```\n\n### Agent with Memory\n\n```python\nfrom upsonic import Agent, Task\nfrom upsonic.storage import Memory, InMemoryStorage\n\nmemory = Memory(\n    storage=InMemoryStorage(),\n    session_id=\"session_001\",\n    full_session_memory=True\n)\n\nagent = Agent(model=\"anthropic/claude-sonnet-4-5\", memory=memory)\n\ntask1 = Task(description=\"My name is John\")\nagent.print_do(task1)\n\ntask2 = Task(description=\"What is my name?\")\nagent.print_do(task2)  # Agent remembers: \"Your name is John\"\n```\n\n**Ready for more?** Check out the [Quickstart Guide](https://docs.upsonic.ai/get-started/quickstart) for additional examples including Knowledge Base and Team workflows.\n\n## Key Features\n\n- **Autonomous Agent**: An agent that can read, write, and execute code inside a sandboxed workspace, no tool setup required\n- **Safety Engine**: Policy-based content filtering applied to user inputs, agent outputs, and tool interactions\n- **OCR Support**: Unified interface for multiple OCR engines with PDF and image support\n- **Memory Management**: Session memory and long-term storage with multiple backend options\n- **Multi-Agent Teams**: Sequential and parallel agent coordination\n- **Tool Integration**: MCP tools, custom tools, and human-in-the-loop workflows\n- **Production Ready**: Monitoring, metrics, and enterprise deployment support\n\n## Core Capabilities\n\n### Autonomous Agent\n\n`AutonomousAgent` extends `Agent` with built-in filesystem and shell tools, automatic session memory, and workspace sandboxing. Useful for coding assistants, DevOps automation, and any task that needs direct file or terminal access.\n\n```python\nfrom upsonic import AutonomousAgent, Task\n\nagent = AutonomousAgent(\n    model=\"anthropic/claude-sonnet-4-5\",\n    workspace=\"/path/to/project\"\n)\n\ntask = Task(\"Read the main.py file and add error handling to every function\")\nagent.print_do(task)\n```\n\nAll file and shell operations are restricted to `workspace`. Path traversal and dangerous commands are blocked.\n\n---\n\n### Safety Engine\n\nThe Safety Engine applies policies at three points: user inputs, agent outputs, and tool interactions. Policies can block, anonymize, replace, or raise exceptions on matched content.\n\n```python\nfrom upsonic import Agent, Task\nfrom upsonic.safety_engine.policies.pii_policies import PIIAnonymizePolicy\n\nagent = Agent(\n    model=\"anthropic/claude-sonnet-4-5\",\n    user_policy=PIIAnonymizePolicy,  # anonymizes PII before sending to the LLM\n)\n\ntask = Task(\n    description=\"My email is john.doe@example.com and phone is 555-1234. What are my email and phone?\"\n)\n\n# PII is anonymized before reaching the LLM, then de-anonymized in the response\nresult = agent.do(task)\nprint(result)  # \"Your email is john.doe@example.com and phone is 555-1234\"\n```\n\nPre-built policies cover PII, adult content, profanity, financial data, and more. Custom policies are also supported.\n\nLearn more: [Safety Engine Documentation](https://docs.upsonic.ai/concepts/safety-engine/overview)\n\n---\n\n### OCR and Document Processing\n\nUpsonic provides a unified OCR interface with a layered pipeline: Layer 0 handles document preparation (PDF to image conversion, preprocessing), Layer 1 runs the OCR engine.\n\n```bash\nuv pip install \"upsonic[ocr]\"\n```\n\n```python\nfrom upsonic.ocr import OCR\nfrom upsonic.ocr.layer_1.engines import EasyOCREngine\n\nengine = EasyOCREngine(languages=[\"en\"])\nocr = OCR(layer_1_ocr_engine=engine)\n\ntext = ocr.get_text(\"invoice.pdf\")\nprint(text)\n```\n\nSupported engines: EasyOCR, RapidOCR, Tesseract, PaddleOCR, DeepSeek OCR, DeepSeek via Ollama.\n\nLearn more: [OCR Documentation](https://docs.upsonic.ai/concepts/ocr/overview)\n\n## Upsonic AgentOS\n\nAgentOS is an optional deployment platform for running agents in production. It provides a Kubernetes-based runtime, metrics dashboard, and self-hosted deployment.\n\n- **Kubernetes-based FastAPI Runtime**: Deploy agents as isolated, scalable microservices\n- **Metrics Dashboard**: Track LLM costs, token usage, and performance per transaction\n- **Self-Hosted**: Full control over your data and infrastructure\n- **One-Click Deployment**: Automated deployment pipelines\n\n\u003cimg width=\"3024\" height=\"1590\" alt=\"AgentOS Dashboard\" src=\"https://github.com/user-attachments/assets/42fceaca-2dec-4496-ab67-4b9067caca42\" /\u003e\n\n## IDE Integration\n\nAdd Upsonic docs as a source in your coding tools:\n\n**Cursor:** Settings → Indexing \u0026 Docs → Add `https://docs.upsonic.ai/llms-full.txt`\n\nAlso works with VSCode, Windsurf, and similar tools.\n\n## Documentation and Resources\n\n- **[Documentation](https://docs.upsonic.ai)** - Complete guides and API reference\n- **[Quickstart Guide](https://docs.upsonic.ai/get-started/quickstart)** - Get started in 5 minutes\n- **[Examples](https://docs.upsonic.ai/examples)** - Real-world examples and use cases\n- **[API Reference](https://docs.upsonic.ai/reference)** - Detailed API documentation\n\n## Community and Support\n\n\u003e **💬 [Join our Discord community!](https://discord.gg/pmYDMSQHqY)** — Ask questions, share what you're building, get help from the team, and connect with other developers using Upsonic.\n\n- **[Discord](https://discord.gg/pmYDMSQHqY)** - Chat with the community and get real-time support\n- **[Issue Tracker](https://github.com/Upsonic/Upsonic/issues)** - Report bugs and request features\n- **[Changelog](https://docs.upsonic.ai/changelog)** - See what's new in each release\n\n## License\n\nUpsonic is released under the MIT License. See [LICENCE](LICENCE) for details.\n\n## Contributing\n\nWe welcome contributions from the community! Please read our contributing guidelines and code of conduct before submitting pull requests.\n\n---\n\n**Learn more at [upsonic.ai](https://upsonic.ai)**\n","funding_links":[],"categories":["Projects","Frameworks","Chatbots","🧱 Agent Frameworks","🌟 Core Frameworks","Building"],"sub_categories":["Frameworks \u0026 Models","Advanced Components","Lightweight / Minimalist","Frameworks"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fupsonic%2Fupsonic","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fupsonic%2Fupsonic","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fupsonic%2Fupsonic/lists"}