System Architecture
Theater's architecture is designed around the principles of isolation, determinism, and traceability. This page provides a high-level overview of how the system components interact to deliver these guarantees.
System Components
Theater Runtime
The Theater Runtime is the core orchestration layer that:
- Manages actor lifecycle (creation, execution, termination)
- Implements the supervision system
- Coordinates message delivery between actors
- Maintains the event chain
- Provides access to the store system
Actor Executor
The Actor Executor is responsible for:
- Loading WebAssembly components
- Instantiating component instances
- Providing host functions to components
- Managing component memory and resources
- Executing component functions in response to messages
Event Chain System
The Event Chain tracks:
- All inputs to actors
- All outputs from actors
- State changes
- Error conditions
- Supervision actions
Every action in the system is recorded in a verifiable chain of events that enables:
- Deterministic replay
- Auditing
- Debugging
- System verification
Store System
The content-addressable Store provides:
- Persistent storage for actor state
- Version control for state changes
- Efficient storage through content-addressing
- Verification of stored content
Handler System
Handlers extend actor functionality by providing:
- Access to system services
- Integration with external systems
- Standard capabilities (HTTP, filesystem, etc.)
- Custom functionality through a plugin architecture
Data Flow
-
Input Processing:
- External requests enter through the Theater Server
- Requests are converted to messages
- Messages are recorded in the Event Chain
- Messages are delivered to target actors
-
Actor Execution:
- Actor Executor loads actor component
- Message handlers are invoked
- Actor may access state via the Store
- Actor may use handlers to access services
-
Output Handling:
- Actor responses are recorded in the Event Chain
- Responses are delivered to requesters
- State changes are persisted to the Store
Design Principles
Theater's architecture is built on several key design principles:
-
Isolation through WebAssembly:
- Actors run in sandboxed environments
- Component model provides capability-based security
-
Explicit State Management:
- All state is explicitly managed through the Store
- No hidden or shared state between actors
-
Explicit Communication:
- All communication happens through messages
- No direct actor-to-actor function calls
-
Comprehensive Tracing:
- All system actions are recorded
- Chain provides cryptographic verification
-
Hierarchical Supervision:
- Actors are arranged in supervision trees
- Parent actors manage child lifecycle
These principles work together to create a system that is secure, deterministic, and verifiable, making it ideal for applications where these properties are critical.