Skip to main content

A unified framework for building AI agents with low-code.

Project description

state1

state1 is a unified, open-source Python framework for building powerful, extensible AI agents with minimal setup. It brings together LLMs, web search, RAG, chain-of-thought, multi-agent orchestration, persistent memory, authentication, and real-world actions—all in a single, low-code/no-code package.


🚀 Why state1?

  • One package, all the tools: No more juggling multiple libraries for LLMs, RAG, web search, actions, and orchestration.
  • Low-code/no-code: Build, run, and extend agents with just a few lines of Python or even from the CLI.
  • Real-world ready: Agents can send emails, fetch APIs, search the web, and more—driven by LLM function calling.
  • Multi-agent orchestration: Compose teams of agents for research, summarization, fact-checking, and more.
  • Persistent, editable agents: Every agent is saved as a JSON file—edit configs, add tools, or share agents with others.
  • Open-source and extensible: Add your own actions, agent types, workflows, and UI.

📦 Installation

pip install state1

🖥️ Quickstart: Terminal CLI (Install & Play!)

After installing, just run:

terminal-chat
  • No need to copy scripts or set up anything extra!
  • Create, list, and switch between agents interactively
  • All agent configs are saved in the agents/ directory (edit them directly for advanced options)
  • Works on any OS with Python 3.8+

Example session:

$ terminal-chat
Created default agent with ID: ...
Type /help for commands.
[Agent ...] You: /new
Agent name: ResearchBot
Provider (openai/openrouter) [openai]: openai
API key: ...
...

🧑‍💻 Quickstart: Your First Agent in Python

from state1 import Agent

agent = Agent(
    name="Demo Agent",
    description="An example AI agent",
    context="You are a helpful assistant.",
    provider="openai",  # or "openrouter"
    api_key="YOUR_OPENAI_API_KEY",
    model="gpt-3.5-turbo",
    websearch=True,   # Enable web search context
    rag=True,         # Enable document RAG
    cot=True          # Enable chain-of-thought reasoning
)

agent.chat_loop()  # Start an interactive chat in the terminal

🧩 Features

1. Unified Agent Creation

  • LLMs: OpenAI, OpenRouter (Gemini, Claude, etc.)
  • Web search: DuckDuckGo integration
  • RAG: Ingest and retrieve from text, PDF, DOCX using ChromaDB and sentence-transformers
  • Chain-of-thought: Step-by-step reasoning with custom instructions
  • Memory: Persistent chat history per user/agent
  • Authentication: Email/password login with local SQLite DB

2. Real-World Actions (Tool Use)

  • SendEmailAction: Send emails via SMTP (Gmail, Outlook, etc.)
  • FetchAPIAction: Fetch data from any API (weather, GitHub, etc.)
  • LLM function calling: Actions are exposed as JSON schemas for natural invocation by the LLM

3. Multi-Agent Orchestration

  • Orchestrator class supports:
    • Parallel, sequential, voting/consensus, and manager/worker workflows
    • Auto-creation of specialist agents (researcher, summarizer, fact checker, analyser, manager)
    • Chain-of-thought enabled for all agents

4. Extensible and Open

  • Add your own actions by subclassing Action
  • Register new tools, agent types, and workflows
  • Edit agent JSON files to add new capabilities

🧪 Example Scripts

1. Actions Demo

from state1 import Agent
from state1.actions import SendEmailAction, FetchAPIAction

agent = Agent(
    name="ActionDemo Agent",
    provider="openai",
    api_key="YOUR_OPENAI_API_KEY",
    model="gpt-4o",
    smtp_config={
        "smtp_server": "smtp.gmail.com",
        "smtp_port": 465,
        "sender_email": "your@email.com",
        "sender_password": "your_app_password"
    },
    apis={
        "github": {"url": "https://api.github.com"},
        "weather": {"url": "https://wttr.in"}
    }
)
agent.register_action(SendEmailAction())
agent.register_action(FetchAPIAction())
agent.chat_loop()

2. RAG Demo

from state1 import Agent

agent = Agent(
    name="RAG Agent",
    provider="openai",
    api_key="YOUR_OPENAI_API_KEY",
    model="gpt-3.5-turbo",
    rag=True
)
agent.add_document("example.pdf")
agent.chat_loop()

3. Orchestrator Demo

from state1.orchestrator import Orchestrator

orchestrator = Orchestrator(
    orchestra=True,
    api_key="YOUR_OPENAI_API_KEY",
    model="gpt-3.5-turbo",
    workflow_mode="manager"
)
orchestrator.chat_loop()

4. Auth & Memory Demo

from state1 import Agent

agent = Agent(
    name="AuthTest Agent",
    provider="openai",
    api_key="YOUR_OPENAI_API_KEY",
    model="gpt-3.5-turbo",
    auth=True,   # enables email/password authentication and DB
    memory=True  # enables persistent memory per user
)
agent.chat_loop()

🛠️ Advanced: Adding Your Own Actions

Create a new action by subclassing Action:

from state1.actions import Action

class MyCustomAction(Action):
    name = "my_action"
    description = "Describe what this action does."

    def run(self, **kwargs):
        # Your logic here
        return "Action result!"

# Register with your agent
agent.register_action(MyCustomAction())

📝 Agent JSON File Reference

You can edit any agent's JSON file in the agents/ directory to add or change fields:

  • name, description, context
  • provider, api_key, model
  • websearch, rag, cot, auth, memory
  • smtp_config (for email actions)
  • apis (for API actions)
  • ...and more!

🔒 Security & Credentials

  • Never commit your API keys or passwords to public repos.
  • For email actions, use app passwords (e.g., Gmail app password).
  • Agent files are local and editable, but protect your agents/ directory if needed.

🧠 Philosophy

  • Unify: All major agent features in one package.
  • Extensible: Add new tools, actions, and workflows easily.
  • No lock-in: All configs are plain JSON, easy to edit, export, or share.
  • Open-source: MIT licensed, community contributions welcome!

📚 Roadmap

  • More built-in actions (Slack, calendar, file management, etc.)
  • LLM-driven tool selection and chaining
  • Web UI and API endpoints
  • Analytics, monitoring, and agent dashboards
  • Community-contributed agent templates

🏁 Get Started

  1. pip install state1
  2. Run terminal-chat
  3. Create, edit, and chat with agents—your AI team, your way!

📄 License

MIT


state1 — The unified, open-source AI agent framework for everyone.

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

state1-0.5.tar.gz (16.8 kB view details)

Uploaded Source

Built Distribution

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

state1-0.5-py3-none-any.whl (15.3 kB view details)

Uploaded Python 3

File details

Details for the file state1-0.5.tar.gz.

File metadata

  • Download URL: state1-0.5.tar.gz
  • Upload date:
  • Size: 16.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.0

File hashes

Hashes for state1-0.5.tar.gz
Algorithm Hash digest
SHA256 c15b3f7a4f91d9ccc129a724374ad5d07249ea1013130dfeaf4df76ff9ab7d96
MD5 5c96ece6426194265e0ada15a25e8af9
BLAKE2b-256 ac389e89613cdd9b178d0d43ae6c9aa61922a1a2077aea831a61f8bc75104a83

See more details on using hashes here.

File details

Details for the file state1-0.5-py3-none-any.whl.

File metadata

  • Download URL: state1-0.5-py3-none-any.whl
  • Upload date:
  • Size: 15.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.0

File hashes

Hashes for state1-0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 09938430e7884775a65478794b4644e169184278e8f15240bac8d2b5cb99aea6
MD5 b56a381fc97c6b973e9dfa4bc2df9ad7
BLAKE2b-256 ced2259d066deecdf835f20755119179ac214050373edbe8bdc0941cbdf840e6

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