Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
404c785
Remove the unused public MintActorCertificate API (#3427)
EItanya Oct 29, 2026
40bf20f
fix atelet deviceplugin wedge (#3323)
BenTheElder Oct 29, 2026
427f2fb
docs: say "no escape" from the sandbox on the ate.dev home page and s…
destijl Oct 29, 2026
6949841
docs: average ate.workerpool.workers across replicas before summing (…
cloudonly Oct 29, 2026
0d662b8
benchmarking: stop uploading the duplicate {name}.jsonl (#3309)
haiyanmeng Oct 29, 2026
3aa3eec
ate-setup: retry each ko release image with backoff (#3446)
annapendleton Oct 29, 2026
5d226a5
Run containers as the image's USER and WORKDIR, with layer file owner…
aramase Oct 29, 2026
62efb70
atenet-router no longer stalls 15s on every start (#3346)
chuangw6 Oct 29, 2026
910671c
e2e: add asynchronous suspend upload and detach checks (#3264)
msau42 Oct 29, 2026
7cd9fe7
README: add an animated SVG (#3423)
HavenXia Oct 29, 2026
61ea6c6
site: publish per-page Markdown and fix llms.txt and llms-full.txt (#…
moficodes Oct 30, 2026
1261766
docs: normalize actor resume latency and activation rate (#3474)
moficodes Oct 30, 2026
46b6ea9
docs: document sandbox class differences and fix stale passages (#3468)
nybidari Oct 30, 2026
c53f4b2
Allowlist snapshot storage location path segments (#2784)
aramase Oct 30, 2026
5e22427
benchmarking: add a turnover mode to agentsession (#3421)
chw120 Oct 30, 2026
f475d8b
docs: align control-plane docs with the current API and CLI (#3404)
haiyanmeng Oct 30, 2026
33a2862
Merge upstream main into the fork
EItanya Oct 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .github/workflows/helm-e2e.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ name: helm-e2e
on:
pull_request:
push:
branches: [main]
branches: [main, release-1.0]
permissions:
contents: read
jobs:
Expand Down Expand Up @@ -103,6 +103,7 @@ jobs:
--set 'atenetRouter.ingressAllowedSPIFFEIDs[0]=spiffe://cluster.local/ns/ate-e2e-router-client/sa/router-client' \
--set 'atelet.extraArgs[0]=--localhost-registry-replacement=kind-registry:5000' \
--set 'atelet.extraArgs[1]=--snapshot-upload-delay=2s' \
--set 'atelet.extraArgs[2]=--snapshot-detach-delay=30s' \
--set otel.endpoint=http://opentelemetry-collector.otel-system.svc:4317 \
--wait --timeout=10m
- name: Enable NFS
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/helm-verify.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ name: helm-verify
on:
pull_request:
push:
branches: [main]
branches: [main, release-1.0]
permissions:
contents: read
jobs:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/pr-workflow.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ on:
pull_request:
merge_group:
push:
branches: [main]
branches: [main, release-1.0]
schedule:
# Weekly run on the default branch keeps the micro-VM asset cache warm (GitHub
# evicts caches idle for 7 days). The push-to-main run populates the cache that
Expand Down
9 changes: 9 additions & 0 deletions .ko.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,15 @@ defaultPlatforms:
- linux/arm64

baseImageOverrides:
# The actor images built here write at the root of their filesystem and into
# volumes atelet creates as root. A container runs as its image's USER, so
# they stay on the root base.
go.ate.dev/substrate/demos/counter: gcr.io/distroless/static-debian13:latest@sha256:15f8637509792e05b97d83451b0b6ccfa4abd548f997e406ac1e72c87fe1fa78
go.ate.dev/substrate/demos/egress: gcr.io/distroless/static-debian13:latest@sha256:15f8637509792e05b97d83451b0b6ccfa4abd548f997e406ac1e72c87fe1fa78
go.ate.dev/substrate/demos/multi-template/fspersist: gcr.io/distroless/static-debian13:latest@sha256:15f8637509792e05b97d83451b0b6ccfa4abd548f997e406ac1e72c87fe1fa78
go.ate.dev/substrate/internal/e2e/fixtures/probe: gcr.io/distroless/static-debian13:latest@sha256:15f8637509792e05b97d83451b0b6ccfa4abd548f997e406ac1e72c87fe1fa78
go.ate.dev/substrate/internal/e2e/fixtures/testserver: gcr.io/distroless/static-debian13:latest@sha256:15f8637509792e05b97d83451b0b6ccfa4abd548f997e406ac1e72c87fe1fa78
go.ate.dev/substrate/cmd/benchmarking/glutton: gcr.io/distroless/static-debian13:latest@sha256:15f8637509792e05b97d83451b0b6ccfa4abd548f997e406ac1e72c87fe1fa78
go.ate.dev/substrate/demos/sandbox: alpine:3.24.3@sha256:be2656061b536c1883c4034790e21d0a09c5aaaf51968b89368a3c0371ea2c9a
# atelet needs glibc to run the node's kubelet credential provider, which
# some platforms ship dynamically linked (e.g. AKS, GKE Ubuntu).
Expand Down
12 changes: 11 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,24 @@
**Zero-trust sandboxing for millions of agents on Kubernetes.**

[![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
[![Release](https://img.shields.io/github/v/release/agent-substrate/substrate)](https://github.com/agent-substrate/substrate/releases)
[![CI](https://github.com/agent-substrate/substrate/actions/workflows/pr-workflow.yaml/badge.svg?branch=main)](https://github.com/agent-substrate/substrate/actions/workflows/pr-workflow.yaml?query=branch%3Amain)
[![govulncheck](https://github.com/agent-substrate/substrate/actions/workflows/govulncheck.yaml/badge.svg)](https://github.com/agent-substrate/substrate/actions/workflows/govulncheck.yaml)
[![GitHub stars](https://img.shields.io/github/stars/agent-substrate/substrate?style=flat)](https://github.com/agent-substrate/substrate/stargazers)

<a href="https://trendshift.io/repositories/34772"><img src="https://trendshift.io/api/badge/repositories/34772" alt="agent-substrate/substrate on Trendshift: #1 repository of the day" width="250" height="55"></a>

[Quickstart](#quickstart-development) · [Security](docs/security/security.md) · [Architecture](docs/concepts/architecture.md) · [Contributing](CONTRIBUTING.md)

<a href="https://ate.dev">
<img src="docs/assets/readme-hero.svg" alt="Agents are idle most of the time. Agent Substrate suspends idle agents and resumes them on request onto a small pool of warm worker pods." width="900">
</a>

</div>

## What is Agent Substrate?

Agent Substrate is a security-hardened, zero-trust runtime for sandboxed agents, engineered to safely run millions of agents and tools with 10x higher density than standard containers. Purpose-built for the era of autonomous agents, Substrate delivers fast resume operations in less than 400ms, with more than 1500 activations per second. Agents get isolated compute, identity, networking, and storage. Sensitive credentials are kept out of reach from untrusted code. It supports multiple sandbox technologies, including microVMs and gVisor, while enabling a consistent lifecycle and management of all sandboxes.
Agent Substrate is a security-hardened, zero-trust runtime for sandboxed agents, engineered to safely run millions of agents and tools with 10x higher density than standard containers. Purpose-built for the era of autonomous agents, Substrate delivers fast resume operations in less than 500ms, with more than 500 activations per second. Agents get isolated compute, identity, networking, and storage. Sensitive credentials are kept out of reach from untrusted code. It supports multiple sandbox technologies, including microVMs and gVisor, while enabling a consistent lifecycle and management of all sandboxes.

At its core, Agent Substrate maps a larger set of “actors” (stateful workloads such as agents) onto a smaller pool of ready “workers”. Because agents spend most of their lives waiting on models, tools, or humans, Substrate snapshots idle actors out of memory and restores them when a request arrives.

Expand Down
Loading
Loading