Skip to main content

Application Packaging

Status Detailed Spec: spec/web-ui-packaging Purpose: Package GAIA agents as standalone applications for distribution.

14.1 Web UI Generation

from gaia.agents.base.agent import Agent
from gaia.agents.base.tools import tool

class MyAgent(Agent):
    """Custom agent for distribution."""

    def _get_system_prompt(self) -> str:
        return "You are a helpful assistant."

    def _create_console(self):
        from gaia.agents.base.console import AgentConsole
        return AgentConsole()

    def _register_tools(self):
        @tool
        def my_capability(query: str) -> dict:
            """Custom tool."""
            return {"result": f"Processed: {query}"}

# Package as web UI
# Run: gaia package --agent my_agent.MyAgent --ui web --output ./dist

# Generates:
# ./dist/
#   ├── index.html        # Web interface
#   ├── app.js           # Frontend code
#   ├── server.py        # FastAPI backend
#   └── requirements.txt  # Dependencies

14.2 NSIS Windows Installer

# Create Windows installer for your agent
gaia package \
    --agent my_package.MyAgent \
    --installer nsis \
    --output ./installer \
    --name "MyAgent" \
    --version "1.0.0"

# Generates:
# ./installer/
#   ├── MyAgent-1.0.0-setup.exe  # Windows installer
#   └── uninstall.exe             # Uninstaller

# Installer features:
# - Start menu shortcuts
# - Desktop icon
# - Auto-update check
# - Clean uninstall

14.3 Electron Desktop App

# Package as cross-platform desktop app
gaia package \
    --agent my_package.MyAgent \
    --desktop electron \
    --output ./desktop \
    --platforms windows,linux

# Generates:
# ./desktop/
#   ├── MyAgent-1.0.0-win.exe     # Windows app
#   └── MyAgent-1.0.0-linux.AppImage  # Linux app

# Features:
# - Native desktop integration
# - System tray support
# - Auto-updates
# - Offline mode

14.4 Deployment Patterns

# pyproject.toml - Package your agent
[project]
name = "my-gaia-agent"
version = "1.0.0"
dependencies = ["amd-gaia>=0.14.0"]

[project.entry-points."gaia.agents"]
my-agent = "my_package.agent:MyAgent"

[project.scripts]
my-agent = "my_package.cli:main"

# After install, users can:
# 1. Import: from my_package.agent import MyAgent
# 2. CLI: my-agent "Do something"
# 3. API: Start server with `gaia api --agent my-agent`