Skip to main content

AgentApps โ€” A flexible multi-agent orchestration framework with visual Flow Builder

Project description

AgentApps

A flexible multi-agent orchestration framework for building intelligent agent applications with a visual Flow Builder.


Features

๐Ÿค– Simple Agent Creation โ€” Clean, intuitive agent setup
๐Ÿ‘ฅ Team Collaboration โ€” Multiple agents working together
๐Ÿ”„ Sequential Workflows โ€” Automatic multi-step execution
๐Ÿ› ๏ธ Built-in Tools โ€” Web search, scraping, calculations
๐ŸŽฏ Custom Tools โ€” Easy 3rd-party integrations (Jira, Slack, GitHub, SMTP and more)
๐Ÿ“Š Streaming Support โ€” Real-time responses
๐Ÿ” Web Search โ€” DuckDuckGo integration
๐ŸŒ Web Scraping โ€” Extract content from any URL
๐ŸŒŸ Multi-Model Support โ€” OpenAI, Google Gemini, xAI Grok, Ollama (local)
๐Ÿ—‚๏ธ Platform Tables โ€” Built-in structured data storage
โฐ Triggers & Scheduler โ€” Run agents on a schedule or via webhook
๐Ÿš Shell Tool โ€” Execute server commands from agents (opt-in)
๐Ÿ” Role-Based Access โ€” Admin, Editor, Operator, Viewer roles
๐Ÿ”‘ SSO / Microsoft Azure AD โ€” Single Sign-On support
๐Ÿ—๏ธ AI Builder โ€” Describe an agent in plain English and it builds itself
๐ŸŒ Portal โ€” End-user chat interface for your deployed agents


Links


Installation

pip install agentapps

Quick Start โ€” Flow Builder UI

agentapps-flow

This starts the server and automatically opens the visual Flow Builder in your browser at http://localhost:7860.

# Custom port
agentapps-flow --port 8080

# Don't open browser automatically
agentapps-flow --no-browser

# Dev mode with hot-reload
agentapps-flow --reload

Secure Login

1. CLI flag

agentapps-flow --password mysecretpassword

2. Environment variable (recommended for servers)

export AGENTAPPS_PASSWORD=mysecretpassword
agentapps-flow

3. Auto-generated password

If no password is set, one is auto-generated and printed to the console:

โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—
โ•‘   ๐Ÿ”‘ Auto-generated password:                โ•‘
โ•‘      xK9mP2nQvR4sT7uW                        โ•‘
โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

Passwords are stored as secure hashes โ€” never in plaintext.


Shell Tool (opt-in)

Enable agents to run shell commands on the server (Windows cmd, Mac/Linux bash, PowerShell):

agentapps-flow --enable-shell

Or via environment variable:

AGENTAPPS_ENABLE_SHELL=true agentapps-flow

Optionally restrict the working directory:

AGENTAPPS_SHELL_DIR=/path/to/scripts agentapps-flow --enable-shell

Shell tool is disabled by default. All commands are logged and protected by a blocklist. Use with care on shared servers.


Supported Models

Provider Model IDs
OpenAI gpt-4o, gpt-4-turbo, gpt-3.5-turbo
Google Gemini gemini-2.0-flash, gemini-1.5-pro
xAI Grok grok-3, grok-3-mini
Ollama (local) Any locally served model via http://localhost:11434
Azure OpenAI Any Azure-hosted OpenAI deployment

Quick Start with OpenAI

from agentapps import Agent
from agentapps.model import OpenAIChat
from agentapps.tools import SearchSummaryTool

agent = Agent(
    name="Research Assistant",
    role="Search and analyze information",
    model=OpenAIChat(id="gpt-4o", api_key="your-openai-key"),
    tools=[SearchSummaryTool()],
    instructions=["Always include sources"],
    show_tool_calls=True
)

agent.print_response("What is the latest news about AI?")

Get an OpenAI API key: https://platform.openai.com/api-keys


Quick Start with Gemini

from agentapps import Agent
from agentapps.model import GeminiChat
from agentapps.tools import SearchSummaryTool

agent = Agent(
    name="Research Assistant",
    role="Search and analyze information",
    model=GeminiChat(id="gemini-2.0-flash-exp", api_key="your-google-api-key"),
    tools=[SearchSummaryTool()],
    instructions=["Always include sources"],
    show_tool_calls=True
)

agent.print_response("What is the latest news about AI?")

Get a Gemini API key: https://makersuite.google.com/app/apikey


Quick Start with Grok xAI

from agentapps import Agent
from agentapps.model import GrokChat
from agentapps.tools import SearchSummaryTool

agent = Agent(
    name="Research Assistant",
    role="Search and analyze information",
    model=GrokChat(id="grok-3-mini", api_key="your-xai-api-key"),
    tools=[SearchSummaryTool()],
    instructions=["Always include sources"],
    show_tool_calls=True
)

agent.print_response("What is the latest news about AI?")

Get a Grok API key: https://console.x.ai


Available Tools

SearchSummaryTool

Search the web and get detailed snippets:

from agentapps.tools import SearchSummaryTool

agent = Agent(
    name="Searcher",
    model=OpenAIChat(id="gpt-4o", api_key="key"),
    tools=[SearchSummaryTool()]
)

WebScraperTool

Scrape content from URLs:

from agentapps.tools import WebScraperTool

agent = Agent(
    name="Scraper",
    model=OpenAIChat(id="gpt-4o", api_key="key"),
    tools=[WebScraperTool()]
)

CalculatorTool

Perform calculations:

from agentapps.tools import CalculatorTool

agent = Agent(
    name="Calculator",
    model=OpenAIChat(id="gpt-4o", api_key="key"),
    tools=[CalculatorTool()]
)

Team Agents

Create teams that work together sequentially:

from agentapps import Agent
from agentapps.model import OpenAIChat
from agentapps.tools import SearchSummaryTool, WebScraperTool

search_agent = Agent(
    name="Search Agent",
    role="Search the web",
    model=OpenAIChat(id="gpt-4o", api_key="your-key"),
    tools=[SearchSummaryTool()]
)

scraper_agent = Agent(
    name="Scraper Agent",
    role="Read web pages",
    model=OpenAIChat(id="gpt-4o", api_key="your-key"),
    tools=[WebScraperTool()]
)

team = Agent(
    team=[search_agent, scraper_agent],
    instructions=[
        "First, search for relevant URLs",
        "Then, scrape content from those URLs",
        "Finally, provide a comprehensive answer"
    ],
    show_tool_calls=True
)

team.print_response("Research NVIDIA's latest AI developments")

Custom Tools

Create your own tools easily:

from agentapps import Tool

class WeatherTool(Tool):
    def __init__(self):
        super().__init__(
            name="get_weather",
            description="Get weather for a city"
        )

    def execute(self, city: str) -> str:
        return f"Weather in {city}: Sunny, 72ยฐF"

    def get_parameters(self):
        return {
            "type": "object",
            "properties": {
                "city": {"type": "string", "description": "City name"}
            },
            "required": ["city"]
        }

agent = Agent(
    name="Weather Agent",
    model=OpenAIChat(id="gpt-4o", api_key="key"),
    tools=[WeatherTool()]
)

You can also register custom tools via the Flow Builder UI โ€” no restart required.


Examples

Stock Analysis

agent = Agent(
    name="Stock Analyst",
    role="Analyze stocks",
    model=OpenAIChat(id="gpt-4o", api_key="key"),
    tools=[SearchSummaryTool()],
    instructions=["Include price targets and analyst ratings"]
)

agent.print_response("Analyze NVDA stock with latest news and recommendations")

Research Team

research_team = Agent(
    team=[search_agent, scraper_agent],
    instructions=[
        "Search for academic sources",
        "Read full articles",
        "Provide a comprehensive summary with citations"
    ]
)

research_team.print_response("What are the latest breakthroughs in quantum computing?")

API Reference

Agent

Agent(
    name: str = "Agent",
    role: str = "General Assistant",
    model: Model = None,
    tools: List[Tool] = None,
    instructions: List[str] = None,
    team: List[Agent] = None,
    show_tool_calls: bool = False,
    markdown: bool = False,
    temperature: float = None
)

Methods

Method Description
run(message, stream=False) Execute agent
print_response(message, stream=False) Print response to console
clear_history() Clear conversation history
add_tool(tool) Add a tool dynamically
get_info() Get agent information

Role-Based Access Control

The platform supports four roles assignable per user:

Role Description
Admin Full access โ€” users, settings, SSO, shell tool
Editor Build and run โ€” create/edit agents, tools, schedules
Operator Run only โ€” use agents via portal, view reports and approvals
Viewer Read only โ€” view projects, tables, reports

Manage users and assign roles from the Admin โ†’ Users section in the Flow Builder.


Triggers & Scheduler

Run agents automatically on a schedule or via external webhook:

  • Scheduler โ€” run agents every N minutes, hourly, daily, or weekly
  • Webhook โ€” trigger agents via HTTP from any external service (Jira, Zapier, Slack, etc.)

Manage triggers from the Triggers tab or ask the AI Builder to add one for you.


HTTPS / SSL

Secure HTTPS is required for production webhooks.

Option 1 โ€” Auto self-signed certificate (easiest)

pip install cryptography
agentapps-flow --ssl-self-signed

Option 2 โ€” Bring your own certificate (Let's Encrypt / purchased)

agentapps-flow --ssl-cert /path/to/cert.pem --ssl-key /path/to/key.pem

Getting a free Let's Encrypt certificate:

pip install certbot
certbot certonly --standalone -d yourdomain.com

agentapps-flow \
  --ssl-cert /etc/letsencrypt/live/yourdomain.com/fullchain.pem \
  --ssl-key  /etc/letsencrypt/live/yourdomain.com/privkey.pem

Option 3 โ€” Standard HTTPS port (443)

agentapps-flow --port 443 --ssl-self-signed

On Linux/macOS, binding to port 443 requires root or sudo. Consider using a reverse proxy (nginx, Caddy) for production.

Using with ngrok (recommended for local webhooks)

# Terminal 1
agentapps-flow

# Terminal 2
ngrok http 7860

Use the https://xxxx.ngrok-free.app URL as your webhook base URL.

Webhook URL format

https://your-domain.com/webhook/<project-name>?token=<bearer-token>

Tokens are generated in the Flow Builder under โ˜ฐ Menu โ†’ ๐Ÿ”— Webhooks.


All CLI Flags

Flag Default Description
--port 7860 Port to listen on
--host 0.0.0.0 Host to bind to
--no-browser off Don't auto-open browser
--reload off Hot-reload on file changes (dev mode)
--password โ€” Set UI login password
--ssl-self-signed off Auto-generate self-signed certificate
--ssl-cert โ€” Path to SSL certificate .pem file
--ssl-key โ€” Path to SSL private key .pem file
--enable-shell off Enable ShellTool (execute shell commands via agents)

Requirements

  • Python >= 3.8
  • An API key from OpenAI, Google Gemini, xAI Grok โ€” or a local Ollama instance

Installed automatically with pip install agentapps:

  • openai โ€” OpenAI / Grok API client
  • ddgs โ€” DuckDuckGo search
  • beautifulsoup4 โ€” HTML parsing
  • google-genai โ€” Google Gemini client
  • requests โ€” HTTP requests

License

MIT License


Contributing

Contributions welcome! Please feel free to submit a Pull Request on GitHub.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

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

agentapps-0.2.22-py3-none-any.whl (497.0 kB view details)

Uploaded Python 3

File details

Details for the file agentapps-0.2.22-py3-none-any.whl.

File metadata

  • Download URL: agentapps-0.2.22-py3-none-any.whl
  • Upload date:
  • Size: 497.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for agentapps-0.2.22-py3-none-any.whl
Algorithm Hash digest
SHA256 01852018b4bed2a1394d0c2ec266610b638fc1fee9e00bdb7410a9df965c319f
MD5 51ba05247629cbbe1a52f189270eac4d
BLAKE2b-256 da4fc9273c8556496170941bb95592fd40084a20ce9647295b885b4efaffcd12

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