Ai Agent Runtime Architecture logo

Ai Agent Runtime Architecture

Community
peterbamuhigire
ai-agent-runtime-architecture

Use when designing multi-tenant agent runtimes, control loops, state machines, retries, idempotency, step caps, durable resumability, scheduling, cancellation, and workflow boundaries.

Overview

Publisherpeterbamuhigire
Repositorychwezi-dev-engine
Skill nameai-agent-runtime-architecture
Stars
29
Forks
6
Bundled files
9
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 9 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by peterbamuhigire on GitHub. Read the source before you install it.

Installation

Install the Ai Agent Runtime Architecture AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/peterbamuhigire/chwezi-dev-engine/tree/main/skills/ai/ai-agent-runtime-architecture
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/peterbamuhigire/chwezi-dev-engine.git /tmp/chwezi-dev-engine
mkdir -p .claude/skills
cp -r /tmp/chwezi-dev-engine/skills/ai/ai-agent-runtime-architecture .claude/skills/ai-agent-runtime-architecture
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Ai Agent Runtime Architecture in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Ai Agent Runtime Architecture on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Ai Agent Runtime Architecture is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

AI Agent Runtime Architecture

Operating contract

Inputs

ArtefactRequired?Purpose
Task state model, tools, durability, timeout, retry, cancellation, tenant, memory, and budget boundariesyesDefine safe runtime transitions

Outputs

  • Produce the runtime state machine, persistence contract, failure matrix, operational controls, and test evidence.

Capability and permission boundaries

Read/search are required. Runtime implementation, queue changes, migrations, replay, and cancellation tests require explicit authority and isolated fixtures.

Degraded mode

Fallback without a runnable environment: produce the state machine and unverified test plan; do not claim runtime enforcement.

Decision rules

WorkloadRuntime choiceFailure avoided
Short, deterministic, read-only requestBounded synchronous flowUnnecessary orchestration
Long, retryable, or externally waitingDurable state machineLost or duplicated work
Irreversible or costly stepApproval and checkpointUnbounded blast radius

Anti-Patterns

  • Running side effects in an HTTP request. Fix: use a durable worker.
  • Retrying without idempotency. Fix: derive stable keys from task and step state.
  • Keeping state only in prompts. Fix: persist every transition before the next step.
  • Ignoring cancellation during tool calls. Fix: propagate and test cancellation.
  • Sharing memory or run state across tenants. Fix: enforce tenant-scoped storage and queries. Acknowledgement: Shared by Peter Bamuhigire, techguypeter.com, +256 784 464178.

Use When

  • Standing up an agent runtime as a control-plane service, not as a function inside a web request.
  • Deciding whether the work is an agent (LLM plans), a deterministic workflow (no LLM in the loop), or a cron (scheduled).
  • Designing the state machine so a crashed worker can resume a 30-minute task without re-charging the customer.
  • Adding step caps, wallclock caps, and idempotency so a runaway agent cannot spend USD 40k of provider budget overnight.
  • Wiring agent task lifecycle events (agent.task.started, agent.step.completed, agent.task.paused, agent.task.killed, agent.task.completed) for observability and back-office.

Do Not Use When

  • The task is the fundamentals of the ReAct loop / tool contract — ai-agents-tools.
  • The task is the multi-agent coordination pattern — ai-agent-multi-agent-coordination.
  • The task is long-running (hours-to-days) durability and progress UX — ai-agent-async-and-long-running-tasks builds on this skill.
  • The task is the overall AI architecture — ai-on-saas-architecture.

Required Inputs

  • The AI on SaaS architecture decision (ai-on-saas-architecture) — gateway, audit log, prompt registry.
  • The agent feature catalogue (which features are agentic, which are single-shot).
  • The plan / tier catalogue with agent entitlements (saas-entitlements-and-plan-gating).
  • Tenant-aware queue / worker infrastructure (distributed-systems-patterns, reliability-engineering).
  • The eval and red-team posture (ai-agent-eval, ai-agent-safety-and-red-team).

Workflow

  1. Read this SKILL.md.
  2. Apply the agent vs workflow vs cron decision (§1). Reject "agent" as the default. Many agentic features are actually workflows with an LLM step.
  3. Design the agent loop state machine (§2) with explicit states and idempotent transitions.
  4. Pick the execution substrate (§3) — inline / queue worker / durable execution engine — based on max wallclock and resumability requirements.
  5. Wire step / token / wallclock / cost budgets (§4) into the loop (delegates to ai-agent-cost-and-step-budgets for full enforcement).
  6. Make every step idempotent and resumable (§5).
  7. Emit task lifecycle events (§6) for observability, back-office, and customer-facing UI.
  8. Apply anti-patterns (§7).

Quality Standards

  • The agent runtime is a separate deployment from request-serving web/API workers. Crash-isolated.
  • Every task has a task_id, tenant_id, feature, model_pin, prompt_version, tool_set_version, step_budget, wallclock_budget, cost_budget, created_at, state.
  • Every step writes a row to agent_steps with step_index, state_before, action, observation, tokens, usd_cost, latency_ms before the next step runs.
  • A worker crash mid-step does not re-execute irreversible actions on restart — idempotency keys are mandatory on side-effects.
  • A task that exceeds any budget is terminated cleanly, emits agent.task.budget_exceeded, and surfaces in the agent inbox.
  • Every task has a per-tenant kill-switch the back-office can flip in < 5 seconds (ai-agent-safety-and-red-team, saas-admin-backoffice-tooling).
  • An agent task is never started inside an HTTP request handler with max_execution_time > 30s. Always queued.

Anti-Patterns

  • "Agent" implemented as a while (not_done) { call_llm(); execute_tool(); } inside a Flask/Express request handler. First failure leaves orphan side-effects.
  • No state machine. Worker restart re-plans from scratch and re-sends the email it already sent.
  • No idempotency keys on tools. Retried send_email sends twice.
  • No max-step cap (maxSteps not enforced or set to 100). One bad prompt drains USD-thousands.
  • Step / token / wallclock budgets only logged, not enforced. Logging is not a control.
  • Agent loop and tool execution in the same process as the web app. A runaway agent OOMs the API.
  • No feature or prompt_version recorded on the task row. Replay impossible.

Outputs

  • Agent vs workflow vs cron decision table for every candidate feature.
  • agent_tasks and agent_steps table schemas.
  • State-machine diagram + transitions.
  • Execution substrate decision (inline / queue / Temporal-class) with rationale.
  • Budget enforcement integration points.
  • Task lifecycle event taxonomy.

Evidence Produced

CategoryArtifactFormatExample
CorrectnessAgent runtime service specMarkdown + diagramdocs/ai/agent-runtime.md
CorrectnessState-machine transition test suiteCI reporttests/ai/agent_state_machine_test.py
Release evidenceResumability drill reportMarkdowndocs/runbooks/agent-resumability-drill.md
OperabilityTask lifecycle event taxonomyYAMLops/events/agent-task-events.yaml

References

  • references/agent-loop-state-machine.md — formal state machine, transitions, idempotency contract.
  • references/agent-vs-workflow-vs-cron-decision.md — decision matrix with worked examples.
  • references/agentic-ai-operating-model-source-synthesis.md - autonomy ladder, production spine, tool contracts, memory/RAG discipline, multi-agent roles, deployment stages, and human-agent operating model distilled from supplied agentic AI source material.
  • Companion: ai-agents-tools, ai-agent-tool-catalogue-and-action-gating, ai-agent-cost-and-step-budgets, ai-agent-observability-and-replay, ai-agent-async-and-long-running-tasks, ai-on-saas-architecture, distributed-systems-patterns, reliability-engineering.

§1 Agent vs Workflow vs Cron — The First Decision

Most "we need an agent" requests are workflows in disguise. An agent is only the right tool when:

  • The steps cannot be enumerated in advance.
  • Branching depends on intermediate observations only the LLM can interpret.
  • Tool choice itself depends on the observation, not the input.

If steps are fixed, prefer a workflow — same LLM calls, deterministic order, vastly cheaper to test, debug, and operate. See references/agent-vs-workflow-vs-cron-decision.md.

2. The agent loop state machine

text
QUEUED -> PLANNING -> ACTING -> OBSERVING -> COMPLETED
                    |             |
                    |             +-> PLANNING (continue or revise)
                    +-> AWAITING_APPROVAL -> ACTING or terminal rejection

Any active state may transition to FAILED, BUDGET_EXCEEDED, KILLED, or ABANDONED.

Terminal states: COMPLETED, FAILED, BUDGET_EXCEEDED, KILLED, ABANDONED.

All state transitions write to agent_steps before the next state is entered. A worker crash between two steps re-enters the loop in the last persisted state. See references/agent-loop-state-machine.md.

§3 Execution Substrate

Wallclock capResumability requirementSubstrate
< 30sBest-effortInline in HTTP request (only for read-only agents)
< 5 minAt-least-onceQueue worker (BullMQ, Celery, RQ, Sidekiq)
< 1 hourExactly-onceDurable workflow engine (Temporal, Inngest, Restate)
Hours / daysExactly-once + resume on deployDurable workflow engine, mandatory

For anything writing to customer state, never run inline in the HTTP handler. The customer's request times out and the agent keeps spending.

§4 Budgets Wired Into the Loop

Before entering PLANNING and ACTING, the loop checks four budgets:

BudgetCheck pointAction on exceed
step_budget (max iterations)Before each PLANNINGTransition to BUDGET_EXCEEDED, emit event, summarise progress
wallclock_budget_secondsBefore each state transitionSame
cost_budget_usdAfter each LLM callSame
tool_cost_budget_usdBefore each ACTINGSame

Budgets come from ai-agent-cost-and-step-budgets. The runtime is the enforcement point.

§5 Idempotency and Resumability

Every side-effecting tool call carries an idempotency key derived from (task_id, step_index, tool_name, arg_hash). If a worker crashes after the side-effect but before persistence, the next worker's tool call short-circuits to the recorded result.

python
def execute_tool_with_idempotency(task_id, step_idx, tool_name, args):
    idem_key = sha256(f"{task_id}:{step_idx}:{tool_name}:{stable_json(args)}")
    cached = idempotency_store.get(idem_key)
    if cached:
        return cached  # tool already ran; replay the recorded observation
    result = tools[tool_name].run(args, idempotency_key=idem_key)
    idempotency_store.put(idem_key, result, ttl_days=30)
    return result

Tools that cannot accept an idempotency key (legacy APIs) must be wrapped in an outbox pattern with a deduplication table. See distributed-systems-patterns.

§6 Task Lifecycle Events

EventWhenUsed by
agent.task.createdEnqueueAudit log, observability
agent.task.startedWorker claimsObservability, agent inbox UI
agent.step.completedAfter OBSERVINGTrace, replay
agent.task.awaiting_approvalHITL transitionApproval UI, mobile push
agent.task.approved / agent.task.rejectedHITL outcomeAudit, resume
agent.task.budget_exceededBudget hitCost ops, support
agent.task.killedManual killBack-office, audit
agent.task.completedSuccessCustomer notification, eval
agent.task.failedUnrecoverable errorSupport, eval

§7 Anti-Pattern Reminders

  • Implementing the loop inline in the API handler.
  • Treating step-budget as a comment.
  • Tool-call idempotency keys derived from random.uuid().
  • Logging the plan but not persisting it — replay is impossible.
  • The agent loop process is the same process as the web app — runaway OOM crashes API.

§8 Compliance-Evidence Emissions (Enhancement)

Every state-machine transition emits a compliance event onto the hash-chained action audit log (ai-agent-audit-log-integrity). The runtime is the canonical source of compliance evidence for ai-agent-soc2-controls CC7.2 (monitoring), PI1.1 (processing integrity), and ai-agent-iso27001-controls A.8.15 (logging, ISO/IEC 27001:2022).

Minimum event taxonomy emitted by the loop:

Transitionevent_classRequired fields
Task acceptedtask_acceptedtask_id, tenant_id, agent_id, intent_summary, policy_version
Plan committedplan_committedtask_id, plan_hash, step_count
Tool call startedtool_call_startedtask_id, step_index, tool_name, tool_version, reversibility, data_class
Tool call endedtool_call_endedtask_id, step_index, outcome, idempotency_key, latency_ms
Approval requiredapproval_requiredtask_id, step_index, tool_name, approver_role
Approval receivedapproval_receivedtask_id, step_index, approval_id, approver_id
Kill-switch flippedkill_switch_flippedscope, actor, reason, drill_run_id (nullable)
Budget breachedbudget_breachedtask_id, budget_kind, threshold, observed
Memory writememory_writetask_id, tier, retention_class, subject_id (hashed)
Erasure steperasure_steprequest_id, step, status
Task closedtask_closedtask_id, terminal_state, verdict_ref

Every event carries policy_version so historical authority checks resolve correctly (see ai-agent-compliance-controls/references/ai-agent-approval-audit-completeness). Emissions are synchronous on the critical path for irreversible-action transitions and kill_switch_flipped; everything else may be batched with at-most-1s drain.

Cross-links: ai-agent-audit-log-integrity, ai-agent-soc2-controls, ai-agent-evidence-automation, ai-agent-compliance-controls/references/ai-agent-approval-audit-completeness.

Consolidated Child References

  • Load references/routing.md to map retired AI child skill slugs to their reference modules.
  • Load ../../sdlc-meta/references/book-driven-system-decision-and-agent-orchestration.md for autonomy, side-effect, escalation, rollback, and currentness controls.

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Ai Agent Runtime Architecture AI skill do?

Use when designing multi-tenant agent runtimes, control loops, state machines, retries, idempotency, step caps, durable resumability, scheduling, cancellation, and workflow boundaries.

Why use Ai Agent Runtime Architecture on TypingMind?

Because you install it once and use it with any model. Ai Agent Runtime Architecture is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Ai Agent Runtime Architecture in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/peterbamuhigire/chwezi-dev-engine/tree/main/skills/ai/ai-agent-runtime-architecture. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Ai Agent Runtime Architecture?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Ai Agent Runtime Architecture?

As many as you like. As long as a model supports skills, you can use Ai Agent Runtime Architecture with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Ai Agent Runtime Architecture AI skill free?

Yes. It is published on GitHub by peterbamuhigire under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇