JBD
ac2332829f
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 16:54:08 -07:00
JBD
532635dd24
feat: add support for inlined files in workspace specifications
2026-09-25 21:37:53 -07:00
JBD
d8ed0fe38b
chore: pin workflow actions and add read permissions
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
JBD
1042a66fc6
Remove StreamLifecycle until it's needed
...
Lifecycle events can be streamed as a part of the Process RPC. Consider introducing lifecycle events in Content when needed.
2026-01-26 18:45:22 -08:00
JBD
d4a8d24425
Add TODO about session lifetime
2026-01-26 18:10:54 -08:00
JBD
18c497469c
Return the outputs
2026-01-26 18:07:13 -08:00
JBD
6ebe346f00
Fix the example input for the Python agent example
2026-01-26 18:00:27 -08:00
JBD
695ab76259
Add TODO about compaction
2026-01-26 17:55:43 -08:00
JBD
3f1ab3ae8f
Fix EVENT_TYPE_HEARTBEAT
2026-01-26 17:53:21 -08:00
JBD
24813a815b
Regenerate the proto file
2026-01-26 17:51:34 -08:00
JBD
17c4d847de
Fix the index of EVENT_TYPE_HEARTBEAT
2026-01-26 17:50:16 -08:00
JBD
f9ed93bcb0
Remove EVENT_TYPE_PROGRESS
2026-01-26 17:44:26 -08:00
JBD
a0ff83feb5
Remove advanced load balancing strategies
2026-01-26 17:39:35 -08:00
JBD
9ab7ed4daf
Use RemoteAgentConfig when registering remote agents
2026-01-26 17:37:32 -08:00
JBD
1704afbd54
Make event type an enum
2026-01-26 17:20:39 -08:00
JBD
ba2ac6d8c6
Send periodic HEARTBEAT events
2026-01-26 17:17:06 -08:00
JBD
7ff4a28c95
Add TODO about CompactionFunc
2026-01-26 17:14:57 -08:00
JBD
91c824e073
Remove unused/obsolete states
2026-01-26 17:11:52 -08:00
JBD
a7063e04ac
PlanFunc and EvaluateFunc should accept a context
2026-01-26 17:05:05 -08:00
JBD
cc8c540ef8
Don't hardcode "no_action" agent
2026-01-25 12:32:46 -08:00
JBD
5db32490ad
Remove dead code
2026-01-25 12:29:39 -08:00
JBD
6ce5df2c70
Remove comment about Session, EventLog works as an interface
2026-01-25 12:26:05 -08:00
JBD
d6c9212955
Add TODO about making Session an interface
2026-01-25 12:23:59 -08:00
JBD
d4cb5a925d
Introduce TriggerForkedSession
2026-01-25 12:19:45 -08:00
JBD
96768bc9ce
Remove misleading metadata example
2026-01-25 12:10:26 -08:00
JBD
2037f3e76c
Add TODO about multimodal input
2026-01-25 12:05:56 -08:00
JBD
29f29f3b81
Don't generate new session_id in the controller
2026-01-25 12:04:34 -08:00
JBD
a825e2ecf6
Add TODO to implement session triggering
2026-01-25 12:03:21 -08:00
JBD
824704637f
Return session_id in the trigger response
2026-01-25 12:00:37 -08:00
JBD
71aad87024
Simplify the instructions to register the demo agent
2026-01-24 13:28:46 -08:00
JBD
a1c1e5f52f
Remove duplicate method
2026-01-24 13:26:27 -08:00
JBD
470816f103
Add note about forking session
2026-01-24 13:24:57 -08:00
JBD
8fd03cb7a5
Use idiomatic naming for exists
2026-01-24 13:20:58 -08:00
JBD
6a327c0119
Remove dead code
2026-01-24 13:20:02 -08:00
JBD
cae99a3fe1
Move checkpoint_id into Content
2026-01-24 13:19:05 -08:00
JBD
79d050472d
Use any instead of interface{}
2026-01-24 12:57:38 -08:00
JBD
7cd2e55c5f
Rename AgentTask to Task
2026-01-24 12:24:25 -08:00
JBD
1931ccfb14
Remove redundant comment
2026-01-24 12:21:23 -08:00
JBD
c7791f677d
Add gar deploy as an idea
2026-01-24 12:20:00 -08:00
JBD
516acaa4ef
Remove arbitrary metadata fields
2026-01-24 12:05:03 -08:00
JBD
b95c38f763
Allow registering remote agents from config
2026-01-24 11:55:20 -08:00
JBD
565b7eebe2
Allow Goal to be a struct type
2026-01-24 11:43:34 -08:00
JBD
15d062d60f
Process handler should take the current session ID
2026-01-24 11:38:24 -08:00
JBD
d3643fdcc5
Introduce sequence numbers to event logs
2026-01-21 21:36:06 -08:00
JBD
fa0c2a91cb
Move controller config to top level
2026-01-21 21:24:45 -08:00
JBD
22f1ae9051
Remove unnecessary output from the CLI
2026-01-21 21:17:50 -08:00
JBD
6d4c7000ce
Remove configuration output at server start
2026-01-21 16:25:18 -08:00
JBD
13e43e99d5
Remove misleading metadata example
2026-01-21 16:09:29 -08:00
JBD
37869bb8ee
Remove dead code
2026-01-21 16:09:29 -08:00
JBD
0a75bec327
Allow context propagation in the controller
2026-01-21 16:09:29 -08:00
JBD
ee7a00f18c
Subcommands should have a context
2026-01-21 16:09:29 -08:00
JBD
8ee4b988e6
Remove session_id from SessionInfo
2026-01-21 16:09:29 -08:00
JBD
81853c4cf8
Remove session_id from TriggerSessionResponse
2026-01-21 16:09:29 -08:00
JBD
63c815338c
Fix run-local and run-remote
2026-01-21 16:09:29 -08:00
JBD
5c03f4ec1a
Fix make build
2026-01-21 16:09:29 -08:00
JBD
aa425a6558
Remove agent_id from HealthCheckRequest
2026-01-21 16:09:29 -08:00
JBD
9ef76b5479
Don't log lifecycle events
...
No use of logging them.
2026-01-21 16:09:29 -08:00
JBD
5c4fa994a9
Remove agent_id from LifecycleEvent
2026-01-21 16:09:29 -08:00
JBD
dc87f7ef9b
Use timestamp_pb2.Timestamp in the Python framework
2026-01-21 16:09:29 -08:00
JBD
62f6eeb4ec
Use timestamppb.Now in the README
2026-01-21 16:09:29 -08:00
JBD
2dbaa2161b
EventLog methods should take a context
2026-01-21 16:09:29 -08:00
JBD
27cd792a0b
Rename GetEntries to RetrieveEntries
2026-01-21 16:09:29 -08:00
JBD
c9310c9e40
Remove session listing
2026-01-21 16:09:29 -08:00
JBD
1ea212346f
Rename gemini_planner.go to gemini.go
2026-01-21 16:09:29 -08:00
JBD
0c6c15f5ca
Rename openConn to connect
2026-01-21 16:09:29 -08:00
JBD
249d688b38
Add TODO about Content
2026-01-21 16:09:29 -08:00
JBD
7971f8dba9
Remove metadata from HealthCheckResponse
2026-01-21 16:09:29 -08:00
JBD
37b55bbb90
Use timestamppb for timestamps
2026-01-21 16:09:29 -08:00
JBD
4dedfe9cac
Make agent ID a constant
2026-01-21 16:09:29 -08:00
JBD
f86259ec70
Remove misleading metadata from health check
2026-01-21 16:09:29 -08:00
JBD
d35385860a
gar trigger --input cannot be optional
2026-01-21 16:09:29 -08:00
JBD
18c63f1f31
Use --agent-name and --agent-description
2026-01-21 16:09:29 -08:00
JBD
aaa81e758f
gar register should require a name and description
2026-01-21 16:09:29 -08:00
JBD
a043e3b7b7
Simplify inspect section
2026-01-21 16:09:29 -08:00
JBD
219fe7a899
Simplify the local example
2026-01-21 16:09:29 -08:00
JBD
0118059a09
Don't allow unregistering local agents
2026-01-21 16:09:29 -08:00
JBD
185e3ec4c3
Remove agent_type from RegisterAgentRequest
2026-01-21 16:09:29 -08:00
JBD
f7ab4745b1
Remove root.go
2026-01-21 16:09:29 -08:00
JBD
b42b3f9c83
Introduce openConn
2026-01-21 16:09:29 -08:00
JBD
1b15387d7c
Make --server flag optional
2026-01-21 16:09:29 -08:00
JBD
bf9eaa9ff0
Use cobra for CLI management
2026-01-21 16:09:29 -08:00
JBD
c37188784b
Ensure that max_steps are per trigger
2026-01-21 16:09:29 -08:00
JBD
c7dbc7d967
Fix the indentation
2026-01-21 16:09:29 -08:00
JBD
04472c71b1
Remove gar list
2026-01-21 16:09:29 -08:00
JBD
9b2ed22857
Take a list of content as inputs
2026-01-21 16:09:29 -08:00
JBD
68d4e132fe
Simplify the README
2026-01-21 16:09:29 -08:00
JBD
b5b5912ac4
Introduce yaml based config
2026-01-21 16:09:29 -08:00
JBD
c4b919bf8b
Switch to the Gemini planner
2026-01-21 16:09:29 -08:00
JBD
06b5ecbd80
Add a simple Gemini planner
2026-01-21 16:09:29 -08:00
JBD
ca1452dfca
Add trajectory collection to the the TODOs
2026-01-21 16:09:29 -08:00
JBD
9385046fe5
Run gofmt -w
2026-01-21 16:09:29 -08:00
JBD
17c1fc6784
Add example health check function
2026-01-21 16:09:29 -08:00
JBD
d8f08aacae
Always return State_STATE_FAILED when there is an error
2026-01-21 16:09:29 -08:00
JBD
44024b2730
Remove extra line
2026-01-21 16:09:29 -08:00
JBD
5e37e609de
gofmt the example
2026-01-21 16:09:29 -08:00
JBD
29df044a34
Remove useless descriptions
2026-01-21 16:09:29 -08:00