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
- GitHub: https://github.com/91Abdul/agentapps
- PyPI: https://pypi.org/project/agentapps
- Website: https://www.agentappsai.com
- Issues: https://github.com/91Abdul/agentapps/issues
- Discord: https://discord.gg/xAUYb2vujP
- LinkedIn Group: https://www.linkedin.com/groups/14471903/
- Support: ak@agentappsai.com
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 clientddgsโ DuckDuckGo searchbeautifulsoup4โ HTML parsinggoogle-genaiโ Google Gemini clientrequestsโ HTTP requests
License
MIT License
Contributing
Contributions welcome! Please feel free to submit a Pull Request on GitHub.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file agentapps-0.2.21-py3-none-any.whl.
File metadata
- Download URL: agentapps-0.2.21-py3-none-any.whl
- Upload date:
- Size: 496.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0375daf326920146b63e6f1281069b276959cc1e05d9ddf5d783ceb9b08a74ae
|
|
| MD5 |
1d0d8db31511924982424cba6fdf68d0
|
|
| BLAKE2b-256 |
899119ef845a85deab6a3966b64482ec1c85766e04cf2a6487da90cf38f2bcf8
|