Skip to main content

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

  1. An agent with the manage_apps tool gathers data using its other tools (GA4, Salesforce, knowledge bases, web search, etc.)
  2. The agent writes React TSX source code and prepares a JSON data snapshot
  3. The agent calls manage_apps to create or update the app
  4. The platform validates the source, compiles it, generates Tailwind CSS, and stores everything
  5. Users open /apps/{id} and see the rendered dashboard — charts, tables, KPIs, all interactive

Two Authoring Workflows

Simple Path (Single Tool Call)

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:
  1. Build in sandbox: Agent uses execute_python to create files in /home/user/aster-apps/{slug}/
  2. Write manifest: Agent creates an aster-app.json manifest specifying the entry file and data
  3. 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:
LibraryWhat it provides
reactReact core
@aster/sdkuseAppData() hook to access the snapshot data
@aster/uiShadcn components (Card, Badge, Button, Table, Tabs, etc.) plus cn() utility
rechartsCharts — LineChart, BarChart, PieChart, AreaChart, etc.
lucide-reactIcons
date-fnsDate 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"
}
FieldRequiredDescription
nameYesDisplay name for the app
entryYesRelative path to the root TSX component (must be .tsx)
snapshotYesRelative path to the JSON data file (must be .json)
descriptionNoHuman-readable description
assetsDirNoRelative path to a directory of asset files to include

Limits

LimitValue
Source file size1 MB per file
Total project source5 MB
Compiled bundle5 MB
Snapshot data50 MB
Asset file size100 MB each
Asset count50 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