Documentation Index
Fetch the complete documentation index at: https://docs.asteragents.com/llms.txt
Use this file to discover all available pages before exploring further.
Overview
Apps are persistent React views that agents create during conversations. Unlike chat messages that scroll away, apps live at a stable URL (/apps/{id}) inside Aster where anyone in your organization can open them anytime. Agents write real React code with real data, and the platform compiles, hosts, and renders it inline — same theme, same auth, same navigation as the rest of Aster.
Think of apps as the output surface for your agents’ analytical work: a pipeline dashboard, a weekly KPI report, an SEO performance overview, a customer segmentation view. The agent gathers data with its tools, shapes it, then publishes a persistent view that stays up-to-date when the agent refreshes it.
How It Works
- An agent with the
manage_apps tool gathers data using its other tools (GA4, Salesforce, knowledge bases, web search, etc.)
- The agent writes React TSX source code and prepares a JSON data snapshot
- The agent calls
manage_apps to create or update the app
- The platform validates the source, compiles it, generates Tailwind CSS, and stores everything
- Users open
/apps/{id} and see the rendered dashboard — charts, tables, KPIs, all interactive
Two Authoring Workflows
For straightforward dashboards, the agent passes TSX source and JSON data directly in one manage_apps call:
Agent calls manage_apps with:
action: "create"
name: "Q3 Revenue Dashboard"
source_tsx: "<full React component>"
snapshot_data: { deals: [...], kpis: {...} }
This is fast and works great for single-file apps.
Sandbox Project Path
For complex apps with multiple components, generated assets (charts, CSVs, images), or iterative editing, agents use the sandbox:
- Build in sandbox: Agent uses
execute_python to create files in /home/user/aster-apps/{slug}/
- Write manifest: Agent creates an
aster-app.json manifest specifying the entry file and data
- Publish: Agent calls
manage_apps with action: "publish_from_sandbox"
The sandbox path supports:
- Multi-file TSX projects — helper components, utility files, shared types
- Generated assets — CSVs, images, PDFs up to 100MB each
- Data shaping scripts — Python transforms before the snapshot
- Iterative editing — load an existing app with
load_to_sandbox, modify files, re-publish
What Agents Can Use
Available Imports
Apps can import from these libraries:
| Library | What it provides |
|---|
react | React core |
@aster/sdk | useAppData() hook to access the snapshot data |
@aster/ui | Shadcn components (Card, Badge, Button, Table, Tabs, etc.) plus cn() utility |
recharts | Charts — LineChart, BarChart, PieChart, AreaChart, etc. |
lucide-react | Icons |
date-fns | Date formatting and manipulation |
Tailwind CSS
All Tailwind CSS classes are supported, including arbitrary values like h-[420px] or bg-[#1e40af]. The platform generates per-app CSS at compile time — no CDN script, no flash of unstyled content.
Snapshot Data
The useAppData() hook returns whatever JSON the agent provided as snapshot data. The agent shapes the data for the component’s needs:
import { useAppData } from '@aster/sdk'
export default function Dashboard() {
const { data } = useAppData()
// data is exactly what the agent put in snapshot_data
const { deals, kpis, chartData } = data
// ...render it
}
Viewing Apps
- Sidebar: Click “Apps” in the left navigation to see all apps in your organization
- Direct URL: Every app has a stable URL at
/apps/{id} — bookmark it, share it
- Control Hub: The Apps tab in Control Hub shows the same listing with delete capability
All signed-in organization members can view apps. Deleting apps requires Control Hub access.
Updating Apps
Apps don’t auto-refresh. When the data needs updating, ask the agent to update the app. The agent re-runs its data-gathering tools and calls manage_apps with action: "update". The app URL stays the same — users just reload to see the new version.
For automated updates, pair apps with Scheduled Tasks: create a task that tells the agent to refresh the app on a schedule.
The aster-app.json Manifest
When using the sandbox workflow, the app directory must contain an aster-app.json manifest:
{
"name": "Pipeline Dashboard",
"entry": "src/App.tsx",
"snapshot": "data/snapshot.json",
"description": "Weekly pipeline overview with stage trends",
"assetsDir": "assets"
}
| Field | Required | Description |
|---|
name | Yes | Display name for the app |
entry | Yes | Relative path to the root TSX component (must be .tsx) |
snapshot | Yes | Relative path to the JSON data file (must be .json) |
description | No | Human-readable description |
assetsDir | No | Relative path to a directory of asset files to include |
Limits
| Limit | Value |
|---|
| Source file size | 1 MB per file |
| Total project source | 5 MB |
| Compiled bundle | 5 MB |
| Snapshot data | 50 MB |
| Asset file size | 100 MB each |
| Asset count | 50 files |
Security
Apps render inline in the Aster SPA — same React tree, same Clerk auth, same org scoping. There is no iframe or separate origin. The security boundary is cross-org, enforced by the existing auth model:
- Every API call requires a valid Clerk JWT with orgId
- App data endpoints verify the viewer’s org matches the app’s org
- Source code is validated at compile time: forbidden APIs (
fetch, localStorage, eval, WebSocket, etc.) are rejected before the app is stored
- Only imports from the allowlist are permitted — agents cannot use arbitrary npm packages