AgentsConnect agents and apps

Call an agent from an app

A hosted app's backend can run a platform agent; the run acts as the person using the app.

How it works

  • When the app is registered it gets its own API key as the app secret ALO_API_KEY. The key stays in the app's backend and never reaches the browser.
  • For each signed-in visitor, the app gateway adds a signed identity header, X-Alo-App-Identity, valid for 5 minutes. The app's backend sends it along with its key.
  • The platform runs the agent as that person: their access, their credits, and a chat saved as theirs and hidden from their chat list.
  • A visitor who is not signed in, for example on a public app, has no identity. The call returns 401 with code APP_VIEWER_IDENTITY_REQUIRED.
  • The run can use only the connections the app declares.

Add an agent to an app

Ask App Builder in the app's chat. Two common shapes:

You wantAsk for
A chat assistant inside the appAdd an assistant to this app that uses the agent Contract Reviewer. With no agent named it uses the default agent.
A button that runs an agent on a recordAdd a "Summarize" button: the backend asks Contract Reviewer for a 3-sentence summary of the record and saves it on the record.

App Builder writes the backend route with the platform client the app template ships:

from alo_agents_client import AloAgentsClient
from connector_client import get_request_app_identity

client = AloAgentsClient(app_identity=get_request_app_identity())
summary = ""
for event in client.stream_chat("Summarize contract 12 in 3 sentences.", agent_id=12):
    if event["type"] == "text":
        summary += event["delta"]
    elif event["type"] == "error":
        raise RuntimeError(event["message"])

stream_chat yields events of type text, reasoning, tool, run_started, run_finished and error.

Limits

LimitValue
Visitors who are not signed inRefused, 401
Who paysThe signed-in person
ConnectionsOnly those the app declares
Client timeout120 seconds per request by default

On this page