RapidStack
Overview

RapidStack

RapidStack is the agent orchestration platform for ShellApps. It manages the lifecycle of Norman agents — from spawning and task assignment to execution and teardown.

What RapidStack Does

  • Agent orchestration — Spawn, manage, and terminate agent instances
  • Task queuing — Queue tasks and route them to the right agent
  • Workflow management — Chain agents together for complex multi-step workflows
  • Resource management — Allocate compute, manage concurrency, handle timeouts

Architecture

                    ┌────────────────┐
User Request ─────▶│   RapidStack   │
                    │                │
                    │  Task Queue    │
                    │  ┌──────────┐  │     ┌───────────┐
                    │  │ Task A   │──┼────▶│  Agent 1  │──▶ Toolshed
                    │  │ Task B   │──┼────▶│  Agent 2  │──▶ Toolshed
                    │  │ Task C   │  │     └───────────┘
                    │  └──────────┘  │
                    └────────────────┘
  1. A request comes in (from Experience, API, or another agent)
  2. RapidStack creates a task and queues it
  3. An agent is spawned or reused to handle the task
  4. The agent uses Toolshed to execute tools
  5. Results flow back through RapidStack

Key Concepts

Agents

Agents are stateless workers that execute tasks. Each agent has a defined capability set and can access tools via Toolshed.

interface Agent {
  id: string;
  type: string;           // Agent template/type
  status: 'idle' | 'running' | 'completed' | 'failed';
  taskId?: string;
  tools: string[];        // Toolshed tool IDs this agent can use
  createdAt: string;
  ttl: number;            // Time-to-live in seconds
}

Tasks

Tasks are units of work assigned to agents.

interface Task {
  id: string;
  type: string;
  status: 'queued' | 'running' | 'completed' | 'failed';
  agentId?: string;
  input: Record<string, unknown>;
  output?: Record<string, unknown>;
  priority: number;
  createdAt: string;
}

Workflows

Workflows chain multiple tasks together with conditional logic:

const workflow = {
  name: 'deploy-and-notify',
  steps: [
    { task: 'run-tests', tools: ['e2e.run-suite'] },
    { task: 'deploy', tools: ['github.create-release'], dependsOn: ['run-tests'] },
    { task: 'notify', tools: ['slack.send-message'], dependsOn: ['deploy'] },
  ],
};

Quick Example

import { RapidStack } from '@shellapps/rapidstack-client';
 
const rapid = new RapidStack({ token: authToken });
 
// Create and queue a task
const task = await rapid.createTask({
  type: 'code-review',
  input: { prUrl: 'https://github.com/shellapps/experience/pull/42' },
  tools: ['github.read-pr', 'github.create-review'],
});
 
// Wait for completion
const result = await rapid.waitForTask(task.id);
console.log(result.output);

Related

  • API Reference — Full endpoint documentation
  • Toolshed — Tool registry used by agents
  • Auth — Agent authentication and permissions
  • E2E Testing — Test workflows orchestrated by RapidStack

© 2026 Shell Technology. All rights reserved.