Skip to main content

The Problem

Simple agents can do one thing at a time. But real tasks are complex:
  • “Search the web, summarize results, and tweet the highlights”
  • “Check my calendar, find a free slot, and schedule a meeting”
  • “Analyze this data, generate a chart, and email it to the team”
Each of these requires multiple actions executed in sequence, with results from one feeding into the next.
Action planning lets your agent think in steps. The LLM decides the sequence, and ElizaOS executes each action, passing results forward automatically.

How It Works

When the LLM returns multiple actions, ElizaOS creates an ActionPlan:
The plan flows through state, so each action can see what came before:

Accessing Previous Results

In your action handler, access results from previous steps:

Accessing Plan State

The current action plan is available in state.data.actionPlan:

Error Handling in Plans

When a step fails, the plan continues by default. Handle failures gracefully:

Retrieving Results After Execution

After message processing, retrieve action results programmatically:

Designing Actions for Chaining

When building actions that work well in chains:

Return structured data

Include a data field in results for downstream actions to consume programmatically.

Be idempotent

Actions may be retried. Avoid side effects that can’t be repeated safely.

Check prerequisites

Verify required previous results exist before proceeding.

Fail gracefully

Return success: false with a clear error message rather than throwing.

Example: Data Pipeline

ActionResult Type

Next Steps

Actions Reference

Complete action handler API

State Management

How state flows through the runtime

Background Tasks

Long-running actions with task workers

Streaming

Stream action outputs in real-time