642 Commits
Author SHA1 Message Date
JBD 864488c67d Replace Redis Streams queue and controller with direct execution and resource locking
Transition the AX architecture from asynchronous event queues (Redis Streams
and the `ax-controller` worker pool) to direct, synchronous reconciliation in
`ax-server` guarded by fine-grained distributed locks.

Key changes:
- Implement per-resource locking (`lock:task`, `lock:workspace`, `lock:model`)
  using Redis distributed locks (`SET NX PX` with token validation) and an
  in-memory locker for testing.
- Move Substrate reconciliation directly into `ax-server` for Task, Workspace,
  and Model lifecycle methods (`Create`, `Resume`, `Suspend`, `Delete`).
- Decommission `ax-controller`, `deploy/ax-controller.yaml`, and Redis Stream
  event publishing/consuming interfaces.
- Simplify `ax delete` and `ax watch` in the CLI to eliminate two-phase
  polling loops now that operations complete synchronously.
- Update `demo.sh`, build configurations (`Makefile`, `.ko.yaml`), and
  documentation to reflect the single-binary control plane architecture.
2026-09-27 15:23:17 -07:00
Jaana Dogan d0bc38bcf9 Clarify Model resource concept description
Refine the Model section in docs/concepts.md to directly describe it as a
declarative configuration resource for model providers, parameters, and
credentials rather than using colloquial phrasing.

Fixes #356
2026-09-25 21:44:39 -07:00
JBD 532635dd24 feat: add support for inlined files in workspace specifications 2026-09-25 21:37:53 -07:00
Jaana Dogan c7de928027 Replace UpdateTask with CreateTask and enforce immutability (#398)
* Replace UpdateTask with CreateTask and enforce immutability

Replaced UpdateTask RPC with CreateTask. Tasks are now
immutable once created; modifying an existing task returns a
FailedPrecondition error.

- Renamed UpdateTask/UpdateTaskRequest to CreateTask/CreateTaskRequest.
- Checked existence in Server.CreateTask to prevent mutation.
- Updated CLI apply logic, tests, and documentation.

* refactor: remove TaskSpec.Suspend and default new tasks to suspended state

* chore: update default snapshots bucket to snapshot-substrate-test-ax-substrate
2026-09-25 20:59:08 -07:00
Mesut Oezdil 2fbce2edcd fix(controller): skip reconcile for tasks that are being deleted (#417) 2026-09-25 15:20:58 -07:00
ktsoator c5c1ac5b3d fix(cli): skip empty YAML documents during apply (#409)
Handle empty documents while preserving errors for invalid manifests.
2026-09-25 09:54:06 -07:00
Matt Van Horn 099f24a5ad feat(server): reject resource names that are not RFC 1123 labels (#406)
ax apply accepted any metadata.name, but Substrate requires actor,
ActorTemplate and atespace names to be lowercase RFC 1123 labels. A name
such as Task-With-Caps was therefore stored, and only failed seconds
later with an asynchronous ActorCreationFailed condition that the user
had to dig out of ax describe or the controller logs.

Validate metadata.name (and metadata.atespace when set) against
[a-z0-9]([-a-z0-9]*[a-z0-9])? with a 63 character limit for Task,
Workspace and Model alike, and return InvalidArgument at apply time.

Fixes #370
2026-09-25 09:17:35 -07:00
ASHISH SINGH BORA e70162a340 fix(task-runner): include runner binaries in Docker context (#403) v0.3.1 2026-09-25 06:18:14 -07:00
ktsoator 6015f79106 fix(cli): honor names when getting plural resources (#402)
Require the resource name to be absent before listing, so plural
aliases no longer ignore names in single-resource queries.

Refs #383
2026-09-25 06:10:24 -07:00
ktsoator e09ed1bc54 docs(contributing): fix repository setup and fork workflow (#404)
Replace the outdated repository reference and clarify how to sync with upstream and submit changes from a fork.
2026-09-24 23:31:22 -07:00
Aditya ShantanuandAditya Shantanu 98f4f2ceba docs: add Substrate prerequisites; demo: fail early if Substrate missing (#399)
* docs: add Substrate prerequisites; demo: fail early if Substrate missing

AX depends on a running Agent Substrate installation, but the README only
mentioned that the Control API must be 'reachable' without saying how to
install Substrate, and demo.sh only surfaced a missing Substrate as a late
ActorCreationFailed task condition (or a 180s timeout).

- README: add a Prerequisites section under Quick start with Substrate
  install commands (existing cluster and kind), the expected ate-system
  namespace/Control API address, and verification steps.
- demo.sh: add a preflight step that checks the ax CLI exists, kubectl is
  available, and the Substrate Control API Service is present (namespace
  configurable via SUBSTRATE_NAMESPACE) before mutating any state.

* docs: link to Substrate install instructions instead of duplicating them

Per review feedback, the copied install commands would drift from the
Substrate repo; keep only the link, the expected namespace/Control API
address, and a single verification command.

---------

Co-authored-by: Aditya Shantanu <aditya-shantanu@users.noreply.github.com>
2026-09-24 20:53:33 -07:00
Jaana Dogan acb6c1709b Remove temperature parameter from Model examples (#397)
Remove `temperature` settings from example Model manifests. We don't recommend this parameter.
2026-09-24 17:47:37 -07:00
Jaana Dogan 17116d0ccd demo.sh: shorten poll interval in wait_for to 200ms (#396)
Reduce the sleep interval in the wait_for polling loop from 2s to
0.2s. This allows the demo script to detect task phase and condition
transitions (readiness, suspension) much faster without waiting out
unnecessary 2-second sleep delays.
2026-09-24 17:05:13 -07:00
Jaana Dogan 0b5427c4bb Remove Gateway concept to avoid bifurcation with Substrate (#395)
Remove the Gateway resource across the API, controller, server, CLI,
store, and documentation.

Gateway introduced an unnecessary layer and architectural bifurcation
between Agent Substrate and AX. By removing it, AX aligns directly with
Substrate's native primitives and networking rather than maintaining an
overlapping ingress/routing abstraction.

- Reserved protobuf field 8 and removed Gateway RPCs and messages.
- Cleaned up controller reconciler, server endpoints, and store models.
- Updated CLI, documentation, and example manifests.
2026-09-24 16:59:45 -07:00
Jaana Dogan f009cc81c9 demo: simplify walk-through to highlight core stable features (#391) 2026-09-24 06:40:26 -07:00
Alex Jones e6211f84a9 fix(controller): keep task templates stable across lifecycle changes (#390)
Exclude status and the suspend flag from embedded launch configuration so reconciliation reuses the existing template and golden snapshot.
2026-09-24 02:01:21 -07:00
Jaana Dogan ace03604a6 Add external roadmap (#381)
Fixes #362.
2026-09-23 14:08:21 -07:00
JBD d8ed0fe38b chore: pin workflow actions and add read permissions v0.3.0 2026-09-19 20:27:51 -07:00
JBD dc4f36cdba Restructure AX into a general-purpose orchestration layer for agentic tasks
AX is undergoing a significant redesign, moving away from a single CLI with
an embedded Python harness toward a general-purpose orchestration layer for
agentic tasks. The repository is reorganized around three binaries: ax-server
exposes a gRPC API for submitting Task manifests, ax-controller runs as a
horizontally scaled reconciler that consumes work from Redis Streams, and
ax-task-runner executes tasks inside sandboxed workers. Task state now lives
in Redis rather than Kubernetes CRDs so the system can handle millions of
short-lived tasks without straining etcd. The legacy Python harness, ATE
client, SQL event log, and skill examples are removed, and new design,
concepts, manifest, networking, runner, and sandbox docs plus Kubernetes
deploy manifests describe the new architecture.
2026-09-19 20:14:43 -07:00
JBD b777313020 Add doctor command to diagnose sidecar, assets, and runtime 2026-08-19 22:56:39 -07:00
JBD 20760f4e3d Remove redundant attached field and use cmd nil-check 2026-08-19 22:27:44 -07:00
JBD 34d81b78cf Enable sidecar PID tracking 2026-08-19 22:18:15 -07:00
Jaana Dogan 703a79f2a5 Bump dependencies to fix the broken build v0.2.3 2026-08-13 11:49:13 -07:00
Jaana Dogan 8ee3b7d734 Update dependencies in requirements.txt 2026-08-12 01:01:39 -07:00
Jaana Dogan 2bcc1637b3 Update project dependencies in requirements.txt 2026-08-12 00:38:32 -07:00
Jaana Dogan 7f053762ff Display tool calls, and add an animation for loading 2026-08-12 00:28:09 -07:00
Jaana Dogan e4270cfb71 Update architectural diagram and labels 2026-08-12 00:01:28 -07:00
Jaana Dogan 992cd08608 Add FilesystemService to README roadmap 2026-08-11 23:55:23 -07:00
Jaana Dogan 087df171b3 Rename cli config flags to --agent-config and --agent-config-file 2026-08-11 23:24:28 -07:00
Jaana Dogan 9eac9a3233 Remove system instructions from local agent configuration 2026-08-11 23:21:27 -07:00
Jaana Dogan 0c689080d5 Update roadmap in README with new feature priorities 2026-08-11 23:19:54 -07:00
Jaana Dogan 91567b2844 Remove skills.Available in favor of []skills.Group 2026-08-11 23:17:19 -07:00
Jaana Dogan 9faeb23bed Rename harnessConfig to agentConfig across the codebase for consistency 2026-08-11 23:00:48 -07:00
Jaana Dogan 2282424ebc Make the public facing ExecutionService more InteractionsService-like (#339)
We want AX to be compatible with the Interactions API protocol as much as possible. This PR aligns the proto with Steps and with the Interactions semantics. We will follow up with more changes to make it more compatible with Interactions while preserving a `conversation_id` based history model.

`ConversationService` is removed for now until we know what kind of data operations we want to provide for event log management.
2026-08-11 22:52:05 -07:00
Zhengbo Li f327e23b5b skills: add local directory source alongside the registry (#316)
Introduce a local skills source parallel to the Gemini Enterprise Skill
Registry integration. A local source points at a directory already on disk
(a parent dir holding <skill-id>/SKILL.md subfolders, the same layout as
examples/skills and a registry's target_dir); nothing is fetched and the
directory is used as-is.

- New mode-agnostic result shape (internal/skills: Available/Group/Skill) so
  both sources feed the same consumers without either depending on the other.
- internal/skills/local.Discover enumerates enabled local paths, treating
  immediate subfolders with a SKILL.md as skills (subfolder name = id). It is
  fail-safe like registry materialization: a missing/unreadable/empty path is
  logged and skipped, never blocking harness creation.
- config.SkillsConfig gains Local []LocalSkillsConfig (enabled + path) with
  validation; geminienterprise.Materialize now returns skills.Available.
- cliutil combines registry and local groups into one system-instruction
  pointer for the Antigravity Interactions harness. The Antigravity SDK
  harness (SKILLS_DIR-based) is left as a TODO.

Only the interactions harness is wired; tests cover discovery, fail-safe
degradation, config validation, and the examples/skills fixture.
2026-07-28 13:04:19 -07:00
Jaana Dogan cbd2c56437 refactor: update install script paths in documentation and manifest comments 2026-07-22 22:30:04 -07:00
Jaana Dogan 4474dff3cd refactor: move ate package from internal/k8s to internal/ to decouple from Kubernetes dependencies v0.2.2 2026-07-22 12:59:02 -07:00
Jaana Dogan 0f8d4c62ed refactor: remove unused history confirmation utility functions 2026-07-22 12:57:49 -07:00
Jaana Dogan d9a0f75ed2 docs: update usage documentation for ax execute and serve commands 2026-07-22 12:38:41 -07:00
Jaana Dogan 0f8f36c8d5 docs: simplify quickstart section and fix formatting in README.md 2026-07-22 12:32:24 -07:00
Jaana Dogan 19be3958f3 docs: remove specific harness and model controller descriptions from README 2026-07-22 12:31:28 -07:00
Jaana Dogan f4ad177adb docs: rename --config flag to --ax-config in README examples 2026-07-22 12:30:30 -07:00
Jaana Dogan d4c5c352e0 chore: rename --config flag to --ax-config for consistency 2026-07-22 12:28:28 -07:00
Jaana Dogan b019d135ce chore: add Google LLC copyright headers to generated protocol buffer files 2026-07-22 12:27:26 -07:00
Jaana Dogan d1a3da1142 docs: format bash command examples for better readability in README.md 2026-07-22 12:25:38 -07:00
Jaana Dogan 16db0d7a0f refactor: simplify CLI by removing the exec subcommand and moving its flags to the root command 2026-07-22 12:24:07 -07:00
Jaana Dogan 5ec51983e1 refactor: move antigravity configuration to top-level and rename HarnessesConfig to RegistryConfig 2026-07-22 12:19:30 -07:00
Jaana Dogan c0d8e5bf10 refactor: remove dashboard implementation and web assets 2026-07-22 12:15:28 -07:00
Jaana Dogan bab973e877 refactor: rename seq to step across protocol and internal controller logic 2026-07-22 12:13:19 -07:00
Jaana Dogan 24b2f399fa docs: update README features list to highlight MCP tools and custom environment support 2026-07-22 12:05:48 -07:00