Skip to main content
Today, building a typical backend means connecting many separate systems: API frameworks, a task queue, a cron scheduler, an event bus, a pub/sub layer, a state store, a WebSocket server, and an observability pipeline. Each system brings its own setup, its own deployment, and its own failure modes. Balancing infrastructure and business logic becomes increasingly difficult with every new system. The result of balancing these many necessary systems are delayed delivery, difficulty debugging, transient issues, increased expenses, siloed domain and systems knowledge, and difficulty with onboarding new developers and AI agents. The main benefit of iii is that it transforms a backend from behaving like a series of separate concerns, domains, and services into a single application-level interface across services. iii (pronounced “three eye”) does this by creating a single integration point for all backend systems which results in a stack that is easier to change and which keeps all historical knowledge in one place (ie. a single config). The result is faster onboarding of new developers and AI agents, and simpler debugging across systems, removal of cost centers with reduced switching costs, and faster delivery of backend features.

What makes iii different

iii’s primitives produce an execution model and live system traits that together make it unreasonably good at creating backend software.
What it means
Durable orchestrationCoordinate long-running, failure-tolerant execution across workers and triggers.
Interoperable executionExecute across languages natively as if it were one runtime.
Simple primitivesCollapse distributed backend design into a paradigm that humans and agents can reason about.
Live discoveryFunctions and triggers exposed by one worker become visible and usable across the system in real time.
Live extensibilityAdd new workers and capabilities to a live iii system without redesigning the architecture.
Live observabilityObserve operations, traces, and system behavior across the entire connected stack in real time.

How iii achieves this

iii unifies any backend stack with a single engine and three primitives: Function, Trigger, and Worker. This results in the ability to:
  • Write Functions in any language: Use TypeScript, Python, or Rust. Mix them freely. Everything is just a Function.
  • Handle any event with Triggers: A function call, an HTTP request, a cron schedule, a queue message, a state change, a stream event. They all work the same way: a Trigger fires, iii invokes your Function.
  • Always stay in sync with Workers: When a new function is registered with iii every other part of the stack can use it. Workers can dynamically unregister Functions too, allowing rolling upgrades without manual registry or config updates. No service registry needed — iii always knows what the entire system can do.
React simplified the frontend with Component and Context. iii does the same for the backend with Function, Trigger, and Worker. One mental model for every backend system.

Getting Started

The best way to understand iii is to try it:

1. Install iii

Install the iii engine:
curl -fsSL https://install.iii.dev/iii/main/install.sh | sh

2. Verify installation

Check that iii has installed correctly with the following command. It should return a version number.
iii --version

3. Add Agent Skills

Give your AI coding agent full context on iii:
npx skills add iii-hq/iii
Skills covering every iii primitive — works with Claude Code, Cursor, Gemini CLI, Codex, and 30+ other agents.

Next Steps

Quickstart

Follow the Quickstart and explore a live iii application.

Concepts

Understand Functions and Triggers from a conceptual point of view.

How to use Functions & Triggers

Learn how to register functions, trigger them, and bind them to events.