agent-substrate/substratePublic

Agent Substrate: the core system

AI summary: A high-density runtime control plane for orchestrating and multiplexing large-scale AI agent deployments.

Stars
4.3K
+67 today
Forks
505
Watchers
25
Open issues
377
Open PRs
252
Contributors
~103
Commits
1.1K
Branches
4

GoApache-2.0Created May 13, 2026Last push todayLatest release v0.3.0+472 stars this week+2.5K this month

Quick answers

What is substrate?
A high-density runtime control plane for orchestrating and multiplexing large-scale AI agent deployments.
What does substrate do?
Agent Substrate provides a performant, Kubernetes-native runtime environment explicitly designed to manage large-scale deployments of stateful AI agents. Because AI agents are often idle while waiting for LLM responses or human input, Substrate multiplexes hundreds of 'actors' onto a much smaller pool of physical workers. It manages the full lifecycle of these sandboxes, utilizing advanced snapshotting to instantly suspend and resume actors with sub-second latency while perfectly preserving volatile memory and filesystem state. By deeply integrating with technologies like gVisor, it ensures secure, framework-agnostic execution for any agent harness.
Who is substrate for?
Agent Substrate is for platform engineers, DevOps teams, and AI researchers building highly scalable, multi-agent systems. It requires expertise in Kubernetes administration and distributed system architecture.
How do I get started with substrate?
hack/create-kind-cluster.sh && hack/install-ate-kind.sh --deploy-ate-system
How popular is substrate on GitHub?
agent-substrate/substrate has 4,271 stars and 505 forks on GitHub, and gained 472 stars in the last 7 days.
What license does substrate use?
agent-substrate/substrate is released under the Apache-2.0 license.

Star history

since Aug 21, 2026
02K4KAug 2026Sep 2026Sep 2026Oct 2026
4.3K stars as of Oct 4, 2026. Measured daily since Aug 21, 2026; GitHub no longer exposes earlier star timestamps.

Contribution activity

commits per day, last 52 weeks
OctNovDecJanFebMarAprMayJunJulAugSepMonWedFri2025-10-05: 0 commits2025-10-06: 0 commits2025-10-07: 0 commits2025-10-08: 0 commits2025-10-09: 0 commits2025-10-10: 0 commits2025-10-11: 0 commits2025-10-12: 0 commits2025-10-13: 0 commits2025-10-14: 0 commits2025-10-15: 0 commits2025-10-16: 0 commits2025-10-17: 0 commits2025-10-18: 0 commits2025-10-19: 0 commits2025-10-20: 0 commits2025-10-21: 0 commits2025-10-22: 0 commits2025-10-23: 0 commits2025-10-24: 0 commits2025-10-25: 0 commits2025-10-26: 0 commits2025-10-27: 0 commits2025-10-28: 0 commits2025-10-29: 0 commits2025-10-30: 0 commits2025-10-31: 0 commits2025-11-01: 0 commits2025-11-02: 0 commits2025-11-03: 0 commits2025-11-04: 0 commits2025-11-05: 0 commits2025-11-06: 0 commits2025-11-07: 0 commits2025-11-08: 0 commits2025-11-09: 0 commits2025-11-10: 0 commits2025-11-11: 0 commits2025-11-12: 0 commits2025-11-13: 0 commits2025-11-14: 0 commits2025-11-15: 0 commits2025-11-16: 0 commits2025-11-17: 0 commits2025-11-18: 0 commits2025-11-19: 0 commits2025-11-20: 0 commits2025-11-21: 0 commits2025-11-22: 0 commits2025-11-23: 0 commits2025-11-24: 0 commits2025-11-25: 0 commits2025-11-26: 0 commits2025-11-27: 0 commits2025-11-28: 0 commits2025-11-29: 0 commits2025-11-30: 0 commits2025-12-01: 0 commits2025-12-02: 0 commits2025-12-03: 0 commits2025-12-04: 0 commits2025-12-05: 0 commits2025-12-06: 0 commits2025-12-07: 0 commits2025-12-08: 0 commits2025-12-09: 0 commits2025-12-10: 0 commits2025-12-11: 0 commits2025-12-12: 0 commits2025-12-13: 0 commits2025-12-14: 0 commits2025-12-15: 0 commits2025-12-16: 0 commits2025-12-17: 0 commits2025-12-18: 0 commits2025-12-19: 0 commits2025-12-20: 0 commits2025-12-21: 0 commits2025-12-22: 0 commits2025-12-23: 0 commits2025-12-24: 0 commits2025-12-25: 0 commits2025-12-26: 0 commits2025-12-27: 0 commits2025-12-28: 0 commits2025-12-29: 0 commits2025-12-30: 0 commits2025-12-31: 0 commits2026-01-01: 0 commits2026-01-02: 0 commits2026-01-03: 0 commits2026-01-04: 0 commits2026-01-05: 0 commits2026-01-06: 0 commits2026-01-07: 0 commits2026-01-08: 0 commits2026-01-09: 0 commits2026-01-10: 0 commits2026-01-11: 0 commits2026-01-12: 0 commits2026-01-13: 0 commits2026-01-14: 0 commits2026-01-15: 0 commits2026-01-16: 0 commits2026-01-17: 0 commits2026-01-18: 0 commits2026-01-19: 0 commits2026-01-20: 0 commits2026-01-21: 0 commits2026-01-22: 0 commits2026-01-23: 0 commits2026-01-24: 0 commits2026-01-25: 0 commits2026-01-26: 0 commits2026-01-27: 0 commits2026-01-28: 0 commits2026-01-29: 0 commits2026-01-30: 0 commits2026-01-31: 0 commits2026-02-01: 0 commits2026-02-02: 0 commits2026-02-03: 0 commits2026-02-04: 0 commits2026-02-05: 0 commits2026-02-06: 0 commits2026-02-07: 0 commits2026-02-08: 0 commits2026-02-09: 0 commits2026-02-10: 0 commits2026-02-11: 0 commits2026-02-12: 0 commits2026-02-13: 0 commits2026-02-14: 0 commits2026-02-15: 0 commits2026-02-16: 0 commits2026-02-17: 0 commits2026-02-18: 0 commits2026-02-19: 0 commits2026-02-20: 0 commits2026-02-21: 0 commits2026-02-22: 0 commits2026-02-23: 0 commits2026-02-24: 0 commits2026-02-25: 0 commits2026-02-26: 0 commits2026-02-27: 0 commits2026-02-28: 0 commits2026-03-01: 0 commits2026-03-02: 0 commits2026-03-03: 0 commits2026-03-04: 0 commits2026-03-05: 0 commits2026-03-06: 0 commits2026-03-07: 0 commits2026-03-08: 0 commits2026-03-09: 0 commits2026-03-10: 0 commits2026-03-11: 0 commits2026-03-12: 0 commits2026-03-13: 0 commits2026-03-14: 0 commits2026-03-15: 0 commits2026-03-16: 0 commits2026-03-17: 0 commits2026-03-18: 0 commits2026-03-19: 0 commits2026-03-20: 0 commits2026-03-21: 0 commits2026-03-22: 0 commits2026-03-23: 0 commits2026-03-24: 0 commits2026-03-25: 0 commits2026-03-26: 0 commits2026-03-27: 0 commits2026-03-28: 0 commits2026-03-29: 0 commits2026-03-30: 0 commits2026-03-31: 0 commits2026-04-01: 0 commits2026-04-02: 0 commits2026-04-03: 0 commits2026-04-04: 0 commits2026-04-05: 0 commits2026-04-06: 0 commits2026-04-07: 0 commits2026-04-08: 0 commits2026-04-09: 0 commits2026-04-10: 0 commits2026-04-11: 0 commits2026-04-12: 0 commits2026-04-13: 0 commits2026-04-14: 0 commits2026-04-15: 0 commits2026-04-16: 0 commits2026-04-17: 0 commits2026-04-18: 0 commits2026-04-19: 0 commits2026-04-20: 0 commits2026-04-21: 0 commits2026-04-22: 0 commits2026-04-23: 0 commits2026-04-24: 0 commits2026-04-25: 0 commits2026-04-26: 0 commits2026-04-27: 0 commits2026-04-28: 0 commits2026-04-29: 0 commits2026-04-30: 0 commits2026-05-01: 0 commits2026-05-02: 0 commits2026-05-03: 0 commits2026-05-04: 0 commits2026-05-05: 0 commits2026-05-06: 0 commits2026-05-07: 0 commits2026-05-08: 0 commits2026-05-09: 0 commits2026-05-10: 0 commits2026-05-11: 0 commits2026-05-12: 0 commits2026-05-13: 1 commit2026-05-14: 0 commits2026-05-15: 0 commits2026-05-16: 0 commits2026-05-17: 0 commits2026-05-18: 1 commit2026-05-19: 3 commits2026-05-20: 6 commits2026-05-21: 17 commits2026-05-22: 6 commits2026-05-23: 21 commits2026-05-24: 0 commits2026-05-25: 0 commits2026-05-26: 12 commits2026-05-27: 5 commits2026-05-28: 7 commits2026-05-29: 6 commits2026-05-30: 0 commits2026-05-31: 1 commit2026-06-01: 1 commit2026-06-02: 10 commits2026-06-03: 5 commits2026-06-04: 3 commits2026-06-05: 10 commits2026-06-06: 0 commits2026-06-07: 0 commits2026-06-08: 4 commits2026-06-09: 4 commits2026-06-10: 3 commits2026-06-11: 3 commits2026-06-12: 5 commits2026-06-13: 3 commits2026-06-14: 3 commits2026-06-15: 3 commits2026-06-16: 6 commits2026-06-17: 5 commits2026-06-18: 12 commits2026-06-19: 1 commit2026-06-20: 2 commits2026-06-21: 0 commits2026-06-22: 16 commits2026-06-23: 4 commits2026-06-24: 18 commits2026-06-25: 9 commits2026-06-26: 15 commits2026-06-27: 0 commits2026-06-28: 1 commit2026-06-29: 5 commits2026-06-30: 6 commits2026-07-01: 6 commits2026-07-02: 1 commit2026-07-03: 6 commits2026-07-04: 1 commit2026-07-05: 0 commits2026-07-06: 5 commits2026-07-07: 0 commits2026-07-08: 15 commits2026-07-09: 7 commits2026-07-10: 2 commits2026-07-11: 1 commit2026-07-12: 0 commits2026-07-13: 0 commits2026-07-14: 1 commit2026-07-15: 3 commits2026-07-16: 0 commits2026-07-17: 9 commits2026-07-18: 0 commits2026-07-19: 1 commit2026-07-20: 13 commits2026-07-21: 3 commits2026-07-22: 6 commits2026-07-23: 10 commits2026-07-24: 16 commits2026-07-25: 2 commits2026-07-26: 1 commit2026-07-27: 23 commits2026-07-28: 14 commits2026-07-29: 15 commits2026-07-30: 15 commits2026-07-31: 12 commits2026-08-01: 4 commits2026-08-02: 1 commit2026-08-03: 3 commits2026-08-04: 5 commits2026-08-05: 12 commits2026-08-06: 8 commits2026-08-07: 11 commits2026-08-08: 5 commits2026-08-09: 1 commit2026-08-10: 10 commits2026-08-11: 18 commits2026-08-12: 13 commits2026-08-13: 13 commits2026-08-14: 9 commits2026-08-15: 1 commit2026-08-16: 2 commits2026-08-17: 17 commits2026-08-18: 12 commits2026-08-19: 13 commits2026-08-20: 13 commits2026-08-21: 13 commits2026-08-22: 2 commits2026-08-23: 1 commit2026-08-24: 20 commits2026-08-25: 20 commits2026-08-26: 17 commits2026-08-27: 22 commits2026-08-28: 26 commits2026-08-29: 4 commits2026-08-30: 2 commits2026-08-31: 14 commits2026-09-01: 22 commits2026-09-02: 31 commits2026-09-03: 18 commits2026-09-04: 21 commits2026-09-05: 2 commits2026-09-06: 0 commits2026-09-07: 5 commits2026-09-08: 13 commits2026-09-09: 10 commits2026-09-10: 5 commits2026-09-11: 20 commits2026-09-12: 1 commit2026-09-13: 1 commit2026-09-14: 13 commits2026-09-15: 8 commits2026-09-16: 6 commits2026-09-17: 7 commits2026-09-18: 13 commits2026-09-19: 0 commits2026-09-20: 2 commits2026-09-21: 4 commits2026-09-22: 13 commits2026-09-23: 18 commits2026-09-24: 17 commits2026-09-25: 14 commits2026-09-26: 4 commits2026-09-27: 0 commits2026-09-28: 11 commits2026-09-29: 9 commits2026-09-30: 15 commits2026-10-01: 27 commits2026-10-02: 21 commits2026-10-03: 4 commits
1,098 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Rising fast

    +472 stars this week

  • Very active

    1,098 commits in 52 weeks

  • Community-driven

    ~103 contributors

  • Well documented

    High community health score

  • Permissive license

    Apache-2.0

  • Continuous integration

    Automated checks passing

  • Repeat trending

    9 trending appearances

What substrate does

Agent Substrate provides a performant, Kubernetes-native runtime environment explicitly designed to manage large-scale deployments of stateful AI agents. Because AI agents are often idle while waiting for LLM responses or human input, Substrate multiplexes hundreds of 'actors' onto a much smaller pool of physical workers. It manages the full lifecycle of these sandboxes, utilizing advanced snapshotting to instantly suspend and resume actors with sub-second latency while perfectly preserving volatile memory and filesystem state. By deeply integrating with technologies like gVisor, it ensures secure, framework-agnostic execution for any agent harness.

Agent Substrate is for platform engineers, DevOps teams, and AI researchers building highly scalable, multi-agent systems. It requires expertise in Kubernetes administration and distributed system architecture.

  • High-density multiplexing: Efficiently oversubscribes hardware by juggling stateful actors across a limited pool of physical pods.
  • Sub-second teleportation: Rapidly suspends and resumes actors on any available worker, preserving RAM and filesystem state perfectly.
  • Framework agnostic execution: Manages standard OCI containers at the kernel level, supporting LangChain, Claude Code, and custom ADKs.
  • State preservation: Utilizes full-state snapshots to maintain working memory across hibernation cycles without data loss.
  • Kubernetes integration: Leverages standard Kubernetes infrastructure and Custom Resource Definitions (CRDs) for dynamic routing and scaling.

Where teams use it

Scalable agent hosting

Platform teams deploy the substrate to run thousands of concurrent AI agents efficiently on a highly constrained hardware footprint.

Stateful terminal environments

Developers use it to host Claude Code agents that maintain terminal state, directory context, and memory across multiple sessions.

Secure tool sandboxing

Engineers deploy Model Context Protocol (MCP) servers as substrate actors to provide durable, safely isolated tools for external LLMs.

Cost-optimized execution

Startups drastically reduce cloud infrastructure costs by aggressively multiplexing idle agent workloads instead of provisioning dedicated instances.

Getting started: hack/create-kind-cluster.sh && hack/install-ate-kind.sh --deploy-ate-system

README

main branch

Agent Substrate

License

What is Agent Substrate?

Agent Substrate is a secure-by-default agent execution runtime engineered to run millions of sandboxes with 10x higher density than standard container runtimes. Purpose-built for the era of autonomous agents, Substrate delivers sub-500ms resume operations at over 500 suspend/resume activations per second with native zero-trust kernel and network isolation. It supports multiple sandbox technologies including microVMs and gVisor, enabling consistent lifecycle operations for all sandbox types.

At its core, Agent Substrate maps a larger set of “actors” (applications such as agents) onto a smaller set of ready “workers”, relying on the fact that agent-like applications tend to be idle most of the time to achieve heavy multiplexing. It provides functionality to manage an actor’s lifecycle (e.g. create/destroy, suspend/resume), to assign actors to workers in real time, and to route incoming traffic to them.

Agent Substrate is intended to be a low-opinion system. The workloads it manages don't have to be literal AI agents, but those are the best example of the kind of applications it is designed for. It is not an SDK for building agents, but rather a system for running them at scale.

Agent Substrate leverages Kubernetes for the infrastructure provisioning and worker lifecycle management (Kubernetes Pods). It builds on top of Kubernetes features like Pods and Pod autoscaling, while Agent Substrate provides agent-specific scheduling and control to achieve lower latency. Using Kubernetes as the underlying system enables consistent infrastructure management across all workloads types that are required for end to end agentic deployments and allows holistic infrastructure optimizations for RL scenarios that span agentic, inference and training cycles.

Demo

Agent Substrate Demo

Watch the Agent Substrate cluster multiplex ~250 stateful actors across just 8 physical pods.

This demo highlights the core developer experience and "Agentic Infrastructure" capabilities of Substrate:

  1. Actor Teleport: High-performance suspend and resume of actors onto any available worker in the pool with sub-second activation.
  2. State Persistence: Persistent working memory (volatile RAM) and filesystem state preserved perfectly across hibernation cycles via full-state snapshots.
  3. Agent Multiplexing: Demonstrates 30x+ oversubscription by "juggling" a large registry of stateful actors onto a small pool of shared physical pods.

To reproduce this demo in your own cluster, please refer to the detailed walkthrough in the Counter Demo.

For more videos and walkthroughs, visit our YouTube channel: agent-substrate.

Framework Agnostic & Compatibility

Agent Substrate is designed to be framework and agent harness agnostic. Because it manages standard OCI containers at the kernel level (via gVisor), it can host agents built on any stack.

  • Agent Development Kit (ADK): Support for ADK agents with session state preservation across invocations as actor state. Ideal for all types of agents and stateful tool or subagent calls.
  • LangChain: Ideal execution environment for LangChain agents and tool calls.
  • Claude Code, CodeX, and Antigravity: Support for high-density, stateful coding environments that preserve system state and filesystem state across sessions.
  • Model Context Protocol (MCP): Support for deploying secure, sandboxed MCP servers as Substrate Actors to provide durable tools for any model.

Ecosystem & Examples

  • Agent Executor: A distributed agent runtime that demonstrates building a secure, hyper-scalable agent harness on Agent Substrate (see the announcement blog and integration guide).
  • kagent: A CNCF Sandbox project and Kubernetes-native framework for building, deploying, and managing AI agents that uses Agent Substrate to run sandboxed, stateful agent workloads (see the announcement blog).

Status and compatibility

Agent Substrate is pre-1.0. We are not making any guarantees about backward compatibility at this stage, and APIs and behavior may still change significantly.

Supported Kubernetes Releases

Currently we aim to support the latest stable release of Kubernetes, and the previous minor release.

Community

For announcements, technical discussions, and community support, please join the ate-dev Google Group.

We host a weekly community meeting every Thursday from 10:00am - 11:00am PST.

We also have channels in the CNCF slack; request an invite here if you don't have access.

Developing

Please see CONTRIBUTING.md for guidelines on contributing to the project. We welcome contributions of all kinds, but the project is VERY young. Our immediate focus is on building out the core system and demos, so we may not be able to review or merge contributions that don't align with those goals in the near term.

Quickstart (Development)

To quickly set up the complete environment:

  1. Make sure you have Go, kubectl, and docker installed and configured on your dev machine. We will automatically manage other dependencies via Go, including kind.

  2. Run the following steps:

# create cluster and local registry (IPv4; IP_FAMILY=dual|ipv6 overrides)
hack/create-kind-cluster.sh

# install ate, PostgreSQL, rustfs
hack/install-ate-kind.sh --deploy-ate-system --credential-provider='{"name":"k8s.io"}'

# install counter demo
hack/install-ate-kind.sh --deploy-demo-counter

# install kubectl-ate
go install ./cmd/kubectl-ate

# create a counter actor in the demo's atespace (--template names the
# actor template, resolved in the actor's atespace)
kubectl ate create actor my-counter-1 -a ate-demo-counter --template counter

# port-forward the network router to bind to local port `8000`
kubectl port-forward -n ate-system svc/atenet-router 8000:80

Important

{"name":"k8s.io"} deploys the bundled credential provider with an empty, default-deny namespace policy. Before an actor can have a credential injected, grant its atespace the namespaces whose Secrets it may read; see Enable it.

  1. In a separate terminal, send an HTTP request to increment the counter:
curl -X POST \
   -H "ate-target-actor: ate-demo-counter/my-counter-1" \
   -i http://localhost:8000/

Worker capacity is versioned: the dataplane (the atelet DaemonSet and the worker pods) schedules only on nodes that carry the ate.dev/substrate-version label, and the install stamps it on every node that exists when it runs. A node added later hosts no workers until you label it with the installed version (kubectl label node <node> ate.dev/substrate-version=<build version>). kubectl get ds -n ate-system -l app=atelet -L ate.dev/substrate-version prints the installed version, off the atelet DaemonSet the install created.

GKE Quickstart (Development)

  1. Create and configure your environment file:

    cp hack/ate-dev-env.sh.example .ate-dev-env.sh
    
    # Edit .ate-dev-env.sh to match your project and preferences, then source it:
    source .ate-dev-env.sh
  2. Enable application-default credentials for gcloud:

    gcloud auth application-default login --project=${PROJECT_ID}
  3. Provision the required GCP resources (GKE cluster, GCS, and IAM bindings):

    go run ./tools/setup-gcp bootstrap

    On a fresh project this step also creates the atelet Workload Identity IAM grants that snapshots depend on — see what create iam actually grants to audit them or apply them manually. If you bring your own cluster instead, note the required Kubernetes beta APIs can only be enabled at cluster creation — see the Create Cluster warning.

  4. Deploy the Agent Substrate system to your cluster:

    ./hack/install-ate.sh --deploy-ate-system --credential-provider='{"name":"k8s.io"}'

    --credential-provider is required. {"name":"k8s.io"} also deploys the bundled Kubernetes Secrets provider, with a NetworkPolicy that admits only the egress gateway; {"enabled":false} turns egress credential injection off (see docs/egress-credential-injection.md). ATE_CREDENTIAL_PROVIDER in .ate-dev-env.sh is the same choice.

    Credential injection needs a namespace policy. The bundled provider starts with an empty, default-deny one, so it resolves no Secrets until you grant each atespace the namespaces it may read; see Enable it.

    Nodes that GKE adds later (autoscaling, auto-repair, node upgrades) are born with the node pool's labels, so the pool needs ate.dev/substrate-version too; see Node version labels.

  5. You can then deploy the sample applications. See demos/counter/README.md or demos/sandbox/README.md for detailed walkthroughs.

    ./hack/install-ate.sh --deploy-demo-counter
Custom Setup and Deployment

You can run individual setup steps to create GCP resources as needed. See go run ./tools/setup-gcp --help for available options. For example:

go run ./tools/setup-gcp create cluster
go run ./tools/setup-gcp create bucket

To run the PostgreSQL store backend on Cloud SQL — with IAM database authentication and no passwords — see tools/setup-gcp/cloud-sql.md.

Similarly, you can deploy or cleanup specific Agent Substrate components using the installation script. See ./hack/install-ate.sh --help for all options.

# Re-deploy only ate-apiserver of the ATE system
./hack/install-ate.sh --deploy-ate-apiserver

# Delete everything (core system and all demos)
./hack/install-ate.sh --delete-all
Tearing down resources (GCP)

If you need to delete the resources created by the setup script, you can use the provided script hack/teardown.sh. This script will delete resources in the reverse order of creation and handles partial failures gracefully.

./hack/teardown.sh --all

Or run individual teardown steps as needed (see ./hack/teardown.sh for available options).

Tearing down local kind resources

If you need to delete the local kind cluster and its registry (if it was created by hack/create-kind-cluster.sh):

./hack/delete-kind-cluster.sh

Demos

We provide several sample applications demonstrating Agent Substrate's capabilities:

  1. Counter Demo: A stateful Go HTTP server demonstrating state preservation across suspends/resumes, and on-demand actor resumption and routing via the Substrate router.
  2. Sandbox Demo (Antigravity): A secure, sandboxed execution environment (running Alpine Linux) that allows arbitrary shell execution while preserving filesystem state across sessions.
  3. Claude Code Multiplex: Demonstrates oversubscribing physical hardware by multiplexing multiple Claude Code agents onto a limited pool of workers.
  4. Multi-Template: Two ActorTemplates running different binaries share one WorkerPool, even though the templates live in different atespaces.
  5. Request Parking: An oversubscribed pool where the router holds inbound requests until a worker frees up, instead of returning 503.
  6. Autoscaled WorkerPool: Scales a WorkerPool on its assigned-worker count with an HPA fed by prometheus-adapter.

Documentation & Guides

Tour

Commands

  • cmd/ateapi: The core control plane API server exposing gRPC endpoints to manage actor and worker lifecycles.
  • cmd/atelet: A node-level DaemonSet that supervises physical worker pods, coordinates snapshotting, and manages state transfers.
  • cmd/atecontroller: A Kubernetes controller that reconciles WorkerPool custom resources.
  • cmd/atenet: A combined networking controller providing Envoy routing and proxy sidecars.
  • cmd/ateom-gvisor: An interior-pod helper running inside sandboxed worker pods to execute runsc checkpoint and restore commands.
  • cmd/ateom-microvm: The micro-VM peer of ateom-gvisor, running actors as cloud-hypervisor VMs.
  • cmd/podcertcontroller: A "polyfill" that provides Pod Certificate signers that will eventually ship in upstream Kubernetes (with different names).
  • cmd/kubectl-ate: A CLI tool for managing Agent Substrate resources. See its README.
  • cmd/benchmarking: Synthetic workloads used by the load tests, including glutton, which consumes RAM, disk, and file descriptors on demand.
  • tools/setup-gcp: A provisioning utility to set up the necessary GCP infrastructure resources (GKE, GCS, IAM).
  • demos/: Sample applications demonstrating Agent Substrate capabilities.

Star History

Star history chart for agent-substrate/substrate
View on GitHub

Recent activity

commits and pull requests

Releases and announcements

4 total
  1. v0.3.0v0.3.0Sep 30, 2026

    ## What's Changed ### Bug Fixes * Update agentgateway for split actor and ateom identities by @EItanya in https://github.com/agent-substrate/substrate/pull/1923 * atelet: pin the multi-actor stats fold and keep CPU baselines across pending sweeps by @baizhenyu in https://github.com/agent-substrate/substrate/pull/1885 * Snapshot path validation by @BenTheElder in https://github.com/agent-substrate/substrate/pull/1950 * fix(benchmarking): make the SWE-Perf ActorTemplate deployable by @roycaihw in https://github.com/agent-substrate/substrate/pull/1889 * nighthawk-ingress: let run-dev.sh run more actors than workers by @haiyanmeng in https://github.com/agent-substrate/substrate/pull/1982 * ateom-microvm: reseed the guest CRNG on restore by @eliranw in https://github.com/agent-substrate/substrate/pull/1524 * Pin envoy-dataplane from the release on a pre-built install by @annapendleton in https://github.com/agent-substrate/substrate/pull/1964 ### Features: Networking and Egress * ateom/actor ID split: Ateom uses MintAteomActorCertificate by @ahmedtd in https://github.com/agent-substrate/substrate/pull/1809 * egress policy enhancements for GA by @LiorLieberman in https://gith

  2. v0.2.0v0.2.0Sep 25, 2026

    v0.2.0 adds multi-actor workers, per-sandbox networking, and egress policy enforcement, along with many fixes and API cleanups. Substrate is still pre-1.0 and changes quickly. This release contains **breaking changes** to the API and the wire protocol. Please read them below before you upgrade. Please try it out and [file issues](https://github.com/agent-substrate/substrate/issues/new/choose) for anything you find. ## Breaking Changes - Requests are now routed with an explicit `ate-target-actor: <atespace>/<actor>` header instead of the `Host` header. (#1333) - `ActorTemplate.containers.readyz` is renamed to `wakeupProbe`. (#1794) - The top-level `boot` field is removed from `ResumeActorRequest`. (#1548) - `IPBlockRule` is renamed to `CIDRRule`. (#1597) - `SnapshotsConfig` is renamed to `SnapshotConfig`. (#1791) - `LocalSnapshotInfo` is renamed to `LocalSnapshot`. (#1856) - A worker's `sandbox_class` is now immutable. (#1257) - Every `Delete<Resource>` method now takes `DeletePreconditions`. (#1807) - The egress gateway now enforces `EgressPolicy`. An actor without a policy has no egress, and traffic that no rule allows is denied. (#1545) - Actors can no longer

  3. v0.1.0 - The First Releasev0.1.0Sep 10, 2026

    v0.1.0 Marks our first "real" release. Substrate is still evolving rapidly and will continue to make breaking changes for the immediate future, but we think the system is ready for early testing. Please try it out and [submit issues](https://github.com/agent-substrate/substrate/issues/new/choose) for the things you find! - If something you thought should work, doesn't. Let us know. - If something doesn't work the way you think it should, please file a bug. - If you find a missing feature, check if we're already tracking it and if not please file a feature request. Say hi to [Yolo the Octopus](https://github.com/agent-substrate/substrate/tree/main/logo), our logo and mascot: <img width="300" height="" alt="image" src="https://github.com/user-attachments/assets/0f62da9d-3ac0-4170-8a8c-6f0b3f86a5b0" /> <br/> <br/> <br/> Thank you to all of our contributors. Committers in this release include: - @aditya-shantanu - @ahmedtd - @AlexBulankou - @ameukam - @Angelawork - @annapendleton - @aramase - @azakonovg - @azr - @baizhenyu - @BenTheElder - @bochengchu - @botengyao - @bowei - @brandonrjacobs - @brendandburns - @cheftako - @chuangw6 - @ch

  4. v0.0.0 - initial commitv0.0.0May 19, 2026

    This is the initial commit.

Code frequency

additions and deletions
+2.6M-2.6MWeek of 2026-05-10: +65,115 linesWeek of 2026-05-10: -0 linesWeek of 2026-05-17: +27,393 linesWeek of 2026-05-17: -23,973 linesWeek of 2026-05-24: +3,529 linesWeek of 2026-05-24: -1,854 linesWeek of 2026-05-31: +2,598,848 linesWeek of 2026-05-31: -27,593 linesWeek of 2026-06-07: +31,794 linesWeek of 2026-06-07: -10,205 linesWeek of 2026-06-14: +234,891 linesWeek of 2026-06-14: -6,423 linesWeek of 2026-06-21: +40,912 linesWeek of 2026-06-21: -4,678 linesWeek of 2026-06-28: +6,115 linesWeek of 2026-06-28: -2,748 linesWeek of 2026-07-05: +9,011 linesWeek of 2026-07-05: -11,495 linesWeek of 2026-07-12: +2,148 linesWeek of 2026-07-12: -1,041 linesWeek of 2026-07-19: +29,037 linesWeek of 2026-07-19: -14,613 linesWeek of 2026-07-26: +43,162 linesWeek of 2026-07-26: -12,167 linesWeek of 2026-08-02: +26,049 linesWeek of 2026-08-02: -21,678 linesWeek of 2026-08-09: +313,051 linesWeek of 2026-08-09: -18,566 linesWeek of 2026-08-16: +47,849 linesWeek of 2026-08-16: -16,126 linesWeek of 2026-08-23: +773,039 linesWeek of 2026-08-23: -195,560 linesWeek of 2026-08-30: +136,873 linesWeek of 2026-08-30: -505,008 linesWeek of 2026-09-06: +19,654 linesWeek of 2026-09-06: -8,010 linesWeek of 2026-09-13: +411,103 linesWeek of 2026-09-13: -11,417 linesWeek of 2026-09-20: +15,222 linesWeek of 2026-09-20: -8,310 linesMay 10, 2026Sep 20, 2026
+4.8M lines added, -901.5K removed over the last year.

Commits per week

last 52 weeks
1100Week of 2025-10-05: 0 commitsWeek of 2025-10-12: 0 commitsWeek of 2025-10-19: 0 commitsWeek of 2025-10-26: 0 commitsWeek of 2025-11-02: 0 commitsWeek of 2025-11-09: 0 commitsWeek of 2025-11-16: 0 commitsWeek of 2025-11-23: 0 commitsWeek of 2025-11-30: 0 commitsWeek of 2025-12-07: 0 commitsWeek of 2025-12-14: 0 commitsWeek of 2025-12-21: 0 commitsWeek of 2025-12-28: 0 commitsWeek of 2026-01-04: 0 commitsWeek of 2026-01-11: 0 commitsWeek of 2026-01-18: 0 commitsWeek of 2026-01-25: 0 commitsWeek of 2026-02-01: 0 commitsWeek of 2026-02-08: 0 commitsWeek of 2026-02-15: 0 commitsWeek of 2026-02-22: 0 commitsWeek of 2026-03-01: 0 commitsWeek of 2026-03-08: 0 commitsWeek of 2026-03-15: 0 commitsWeek of 2026-03-22: 0 commitsWeek of 2026-03-29: 0 commitsWeek of 2026-04-05: 0 commitsWeek of 2026-04-12: 0 commitsWeek of 2026-04-19: 0 commitsWeek of 2026-04-26: 0 commitsWeek of 2026-05-03: 0 commitsWeek of 2026-05-10: 1 commitsWeek of 2026-05-17: 54 commitsWeek of 2026-05-24: 30 commitsWeek of 2026-05-31: 30 commitsWeek of 2026-06-07: 22 commitsWeek of 2026-06-14: 32 commitsWeek of 2026-06-21: 62 commitsWeek of 2026-06-28: 26 commitsWeek of 2026-07-05: 30 commitsWeek of 2026-07-12: 13 commitsWeek of 2026-07-19: 51 commitsWeek of 2026-07-26: 84 commitsWeek of 2026-08-02: 45 commitsWeek of 2026-08-09: 65 commitsWeek of 2026-08-16: 72 commitsWeek of 2026-08-23: 110 commitsWeek of 2026-08-30: 110 commitsWeek of 2026-09-06: 54 commitsWeek of 2026-09-13: 48 commitsWeek of 2026-09-20: 72 commitsWeek of 2026-09-27: 87 commitsOct 5, 2025Sep 27, 2026
1.1K commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 0 commitsSun 1:00 — 0 commitsSun 2:00 — 0 commitsSun 3:00 — 1 commitsSun 4:00 — 0 commitsSun 5:00 — 1 commitsSun 6:00 — 0 commitsSun 7:00 — 0 commitsSun 8:00 — 0 commitsSun 9:00 — 0 commitsSun 10:00 — 0 commitsSun 11:00 — 1 commitsSun 12:00 — 0 commitsSun 13:00 — 2 commitsSun 14:00 — 1 commitsSun 15:00 — 0 commitsSun 16:00 — 1 commitsSun 17:00 — 0 commitsSun 18:00 — 1 commitsSun 19:00 — 0 commitsSun 20:00 — 0 commitsSun 21:00 — 3 commitsSun 22:00 — 2 commitsSun 23:00 — 4 commitsMon 0:00 — 0 commitsMon 1:00 — 1 commitsMon 2:00 — 0 commitsMon 3:00 — 3 commitsMon 4:00 — 0 commitsMon 5:00 — 1 commitsMon 6:00 — 0 commitsMon 7:00 — 2 commitsMon 8:00 — 6 commitsMon 9:00 — 7 commitsMon 10:00 — 14 commitsMon 11:00 — 9 commitsMon 12:00 — 4 commitsMon 13:00 — 20 commitsMon 14:00 — 11 commitsMon 15:00 — 13 commitsMon 16:00 — 12 commitsMon 17:00 — 16 commitsMon 18:00 — 10 commitsMon 19:00 — 12 commitsMon 20:00 — 9 commitsMon 21:00 — 5 commitsMon 22:00 — 9 commitsMon 23:00 — 4 commitsTue 0:00 — 3 commitsTue 1:00 — 2 commitsTue 2:00 — 1 commitsTue 3:00 — 1 commitsTue 4:00 — 0 commitsTue 5:00 — 6 commitsTue 6:00 — 1 commitsTue 7:00 — 6 commitsTue 8:00 — 2 commitsTue 9:00 — 8 commitsTue 10:00 — 13 commitsTue 11:00 — 10 commitsTue 12:00 — 8 commitsTue 13:00 — 3 commitsTue 14:00 — 8 commitsTue 15:00 — 9 commitsTue 16:00 — 15 commitsTue 17:00 — 22 commitsTue 18:00 — 12 commitsTue 19:00 — 12 commitsTue 20:00 — 11 commitsTue 21:00 — 14 commitsTue 22:00 — 10 commitsTue 23:00 — 6 commitsWed 0:00 — 2 commitsWed 1:00 — 2 commitsWed 2:00 — 6 commitsWed 3:00 — 1 commitsWed 4:00 — 1 commitsWed 5:00 — 1 commitsWed 6:00 — 0 commitsWed 7:00 — 3 commitsWed 8:00 — 3 commitsWed 9:00 — 11 commitsWed 10:00 — 19 commitsWed 11:00 — 10 commitsWed 12:00 — 6 commitsWed 13:00 — 17 commitsWed 14:00 — 16 commitsWed 15:00 — 16 commitsWed 16:00 — 27 commitsWed 17:00 — 15 commitsWed 18:00 — 16 commitsWed 19:00 — 15 commitsWed 20:00 — 12 commitsWed 21:00 — 10 commitsWed 22:00 — 7 commitsWed 23:00 — 7 commitsThu 0:00 — 2 commitsThu 1:00 — 5 commitsThu 2:00 — 2 commitsThu 3:00 — 6 commitsThu 4:00 — 1 commitsThu 5:00 — 5 commitsThu 6:00 — 1 commitsThu 7:00 — 0 commitsThu 8:00 — 6 commitsThu 9:00 — 7 commitsThu 10:00 — 7 commitsThu 11:00 — 11 commitsThu 12:00 — 9 commitsThu 13:00 — 14 commitsThu 14:00 — 13 commitsThu 15:00 — 15 commitsThu 16:00 — 18 commitsThu 17:00 — 14 commitsThu 18:00 — 16 commitsThu 19:00 — 16 commitsThu 20:00 — 14 commitsThu 21:00 — 15 commitsThu 22:00 — 8 commitsThu 23:00 — 9 commitsFri 0:00 — 5 commitsFri 1:00 — 6 commitsFri 2:00 — 1 commitsFri 3:00 — 1 commitsFri 4:00 — 6 commitsFri 5:00 — 2 commitsFri 6:00 — 1 commitsFri 7:00 — 3 commitsFri 8:00 — 4 commitsFri 9:00 — 6 commitsFri 10:00 — 11 commitsFri 11:00 — 11 commitsFri 12:00 — 16 commitsFri 13:00 — 18 commitsFri 14:00 — 17 commitsFri 15:00 — 16 commitsFri 16:00 — 27 commitsFri 17:00 — 18 commitsFri 18:00 — 12 commitsFri 19:00 — 20 commitsFri 20:00 — 8 commitsFri 21:00 — 17 commitsFri 22:00 — 2 commitsFri 23:00 — 8 commitsSat 0:00 — 1 commitsSat 1:00 — 5 commitsSat 2:00 — 4 commitsSat 3:00 — 2 commitsSat 4:00 — 2 commitsSat 5:00 — 2 commitsSat 6:00 — 2 commitsSat 7:00 — 0 commitsSat 8:00 — 1 commitsSat 9:00 — 4 commitsSat 10:00 — 1 commitsSat 11:00 — 1 commitsSat 12:00 — 5 commitsSat 13:00 — 8 commitsSat 14:00 — 7 commitsSat 15:00 — 3 commitsSat 16:00 — 3 commitsSat 17:00 — 0 commitsSat 18:00 — 0 commitsSat 19:00 — 2 commitsSat 20:00 — 2 commitsSat 21:00 — 0 commitsSat 22:00 — 0 commitsSat 23:00 — 2 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.
DateListRankStars gained
Oct 4, 2026monthly#13+2,460
Oct 3, 2026monthly#11+2,453
Oct 2, 2026weekly#10+594
Oct 1, 2026weekly#10+594
Sep 24, 2026daily#6+245
Sep 23, 2026daily#6+245
Sep 22, 2026daily#2+498
Aug 22, 2026daily#5+22
Aug 21, 2026daily#5+22
  • avelino/awesome-go

    A curated list of awesome Go frameworks, libraries and software

    186.9K stars · Go

  • kubernetes/kubernetes

    Production-Grade Container Scheduling and Management

    128.3K stars · Go

  • microsoft/TypeScript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

    111.3K stars · Go

  • JuliusBrussee/caveman

    🪨 why use many token when few token do trick. Viral skill + proxy for coding agents that cuts 65% of tokens by talking like a caveman.

    109.8K stars · Go

  • infiniflow/ragflow

    RAGFlow is a leading open-source Retrieval-Augmented Generation (RAG) engine that fuses cutting-edge RAG with Agent capabilities to create a superior context layer for LLMs

    91.7K stars · Go

  • caddyserver/caddy

    Fast and extensible multi-platform HTTP/1-2-3 web server with automatic HTTPS

    76.5K stars · Go