Skip to content

rename ateom -> ateworker - #2254

Merged
Haven Xia (HavenXia) merged 15 commits into
agent-substrate:mainfrom
BenTheElder:rename-ateom
Oct 15, 2026
Merged

Haven Xia (HavenXia) merged 15 commits into
agent-substrate:mainfrom
BenTheElder:rename-ateom

Conversation

@BenTheElder

@BenTheElder Benjamin Elder (BenTheElder) commented Oct 6, 2026 •

Copy link
Copy Markdown
Collaborator

The PR title becomes the release note. Write it for users: what changed for them, not how the code changed.

Breaking change

fixes #2065

renames ateom ahead of GA. this is breaking, atelet and the worker images need to be updated together.

  • images / binaries: ateom-gvisor, ateom-microvm -> ateworker-gvisor, ateworker-microvm
  • worker pod container: ateom -> worker
  • RPCs: ateom.Ateom -> ateworker.Worker, atelet.AteomSupport -> atelet.WorkerSupport, atelet.AteomHerder -> atelet.Atelet, MintAteomActorCertificate -> MintWorkerActorCertificate
  • SPIFFE path: ateom-for-actor -> worker-for-actor
  • ate.snapshot.phase values: ateom_restore, ateom_checkpoint -> worker_restore, worker_checkpoint
  • node paths: /var/lib/ate/ateoms//ateom.sock -> workers//worker.sock, ateom-support.sock -> worker-support.sock
  • cgroups: the worker's leaf ateom -> worker, the micro-VM guest's /ateomchv -> /actor
  • authz relation: can_mint_ateom_actor_credential -> can_mint_worker_actor_credential

per review, "worker" where any worker implementation fits and "ateworker" for ours.

the internal go packages (internal/ateom*) keep their names for now, that's a follow-up.

one commit per rename to make review easier.

tested with kind e2e (gVisor + micro-VM) on an earlier rebase, plus CI.

This PR was AI assisted. I have reviewed the changes.

It's a good idea to open an issue first for discussion.

  • Tests pass
  • Appropriate changes to documentation are included in the PR

@wiz-alphabet

wiz-alphabet Bot commented Oct 6, 2026 •

Copy link
Copy Markdown

Wiz Scan Summary

Scanner Findings
Vulnerability Finding Vulnerabilities -
Data Finding Sensitive Data -
Secret Finding Secrets -
IaC Misconfiguration IaC Misconfigurations 2 Medium
SAST Finding SAST Findings 4 Low
Software Management Finding Software Management Findings -
Total 2 Medium 4 Low

View scan details in Wiz

To detect these findings earlier in the dev lifecycle, try the Wiz Code extension for VS Code, JetBrains, or Visual Studio.

@BenTheElder
Benjamin Elder (BenTheElder) force-pushed the rename-ateom branch 3 times, most recently from cbdecb7 to 8964f28 Compare October 6, 2026 20:53
Comment thread benchmarking/deploy_locust.sh Outdated

@thockin Tim Hockin (thockin) left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TL;DR: the places where we just refer to the abstract idea of "a worker" should just say "worker". E.g. if someone could replace our baked-in ateworker with their own worker and the sentence would still make sense, "worker". "ateworker" should refer to specifically our main implementation(s).

But also, most of this is internal - comments etc. Focus on public facing stuff -- proto names and methods and the SPIFFE stuff.

Comment thread internal/ateomsuspend/ateomsuspend.go
Comment thread cmd/ate-setup/internal/steps/overlay.go Outdated
Comment thread cmd/ateapi/internal/controlapi/crash.go Outdated
Comment thread cmd/ateapi/internal/controlapi/workflow_delete.go Outdated
Comment thread cmd/ateapi/internal/controlapi/workflow_pause.go Outdated
Comment thread pkg/proto/ateapipb/ateapi.proto Outdated
Comment thread pkg/proto/ateapipb/ateapi.proto Outdated
Comment thread pkg/proto/ateapipb/ateapi.proto Outdated
Comment thread pkg/proto/ateapipb/ateapi.proto Outdated
// on behalf of a particular actor.
//
// SPIFFE URI: spiffe://${trustdomain}/ateom-for-actor/${atespace}/${actor}
rpc MintAteomActorCertificate(MintAteomActorCertificateRequest) returns (MintAteomActorCertificateResponse);
// SPIFFE URI: spiffe://${trustdomain}/ateworker-for-actor/${atespace}/${actor}

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a very consequential one - should SPIFFE say "ateworker" or "worker"? I think "worker".

Comment thread internal/resources/spiffe.go Outdated
return &url.URL{
Scheme: "spiffe",
Host: ActorSPIFFETrustDomain,
// TODO(identity): Prefix with "atunnel" to prevent
// confusion between atunnel and an actor pretending to be
// an atunnel.
Path: path.Join("ateom-for-actor", r.Atespace, r.Name),
Path: path.Join("ateworker-for-actor", r.Atespace, r.Name),

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Taahir Ahmed (@ahmedtd) this is a decision that will stick for a long time?

@BenTheElder

Copy link
Copy Markdown
Collaborator Author

TL;DR: the places where we just refer to the abstract idea of "a worker" should just say "worker". E.g. if someone could replace our baked-in ateworker with their own worker and the sentence would still make sense, "worker". "ateworker" should refer to specifically our main implementation(s).

Agree.

But also, most of this is internal - comments etc. Focus on public facing stuff -- proto names and methods and the SPIFFE stuff.

Yeah that makes sense, we can punt internal cleanups to later.

@BenTheElder

Copy link
Copy Markdown
Collaborator Author

I do think we should rename the internal packages to match and that's going to cause churn but we can do that separately from nailing down the user-visible renames.

@BenTheElder
Benjamin Elder (BenTheElder) force-pushed the rename-ateom branch 6 times, most recently from 4702dca to 235c262 Compare October 13, 2026 18:02
// TODO(identity): Must be configurable per-install, so that each install can set it to a unique value.
Host: "substrate-actor.local",
Path: path.Join("ateom-for-actor", dbActor.GetMetadata().GetAtespace(), dbActor.GetMetadata().GetName()),
Path: path.Join("worker-for-actor", dbActor.GetMetadata().GetAtespace(), dbActor.GetMetadata().GetName()),

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is worker a process?

I think its weird to call it "worker-for-actor". As the side that validates it, I want to make sure I know that this is a specific process on the worker..

@BenTheElder Benjamin Elder (BenTheElder) Oct 13, 2026 •

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As the side that validates it, I want to make sure I know that this is a specific process on the worker..

There isn't one ... only the actors sandbox. The worker process overseeing those is multi-tenant.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ate-worker [per worker pod] -> gvisor [per actor]

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if ate-worker is a specific pod, (and it is. cause I undersatnd you are only doing a rename) call it ate-worker-for-actor

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See #2254 (review), I think it's sort of an open architecture debate if you can bring your own worker implementation and get this cert or if we'd only allow it with our own implementation?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can of course rename things again, but #2254 (comment) was Tim's take to call this worker and not ateworker.

@thockin Tim Hockin (thockin) Oct 15, 2026 •

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we had a worker which implemented all the right APIs but wasn't literally the ateworker binary we ship -- would we still issue a cert?

ateom was named when it hosted one actor, workers now host many
the package name is part of every method name on the wire
AteomHerder, which ateapi calls to drive actors on a node, becomes Atelet
it runs whatever image the WorkerPool names
the worker's own leaf is now worker, the micro-VM guest's container parent is now /actor
- /var/lib/ate/ateoms/<uid> -> workers/<uid>, ateom.sock -> worker.sock
- ateom-support.sock -> worker-support.sock
- run-ateom and ateom-dir -> ate-base, ateom-capacity -> worker-capacity
(not the internal go package names, yet ...)
@HavenXia
Haven Xia (HavenXia) added this pull request to the merge queue Oct 15, 2026
Merged via the queue into agent-substrate:main with commit 63a17a9 Oct 15, 2026
15 of 18 checks passed
@BenTheElder

Copy link
Copy Markdown
Collaborator Author

#2700 handles the internal package cleanup, fixing all remaining ateom

@BenTheElder
Benjamin Elder (BenTheElder) deleted the rename-ateom branch October 15, 2026 04:32
Michelle Au (msau42) pushed a commit to msau42/substrate that referenced this pull request Oct 15, 2026
Follow-up to agent-substrate#2254, renames the remaining internal/ateom* go packages.

After this change there is no `ateom` left in the repo. 🫡 


- Worker only packages move under `internal/ateworker`: register (the
registration code, leaving `internal/ateworker` itself for the shared
worker code), cgroup, pid1 (was ateominit), actornet (was ateomnet),
phaselog, suspend, tunnel
- Two packages go flat instead: `internal/workerstats`, which atelet
also imports, and `internal/netns`, a generic named netns helper that
atunnel's tests also use
- The downward API file names atecontroller needs move to
`internal/workercapacity`, so it doesn't import the worker registration
code
- `depguard` (`golangci-lint`) now fails any import of
`internal/ateworker` outside `cmd/ateworker-*` and `internal/ateworker`
- Drops an unused stopwatch package
- Renames cmd/atelet's ateom* files

The move commits are only `git mv`, imports and package names are fixed
in a separate commit after each round of moves, to make it clear which
changes are just file moves and which changes are import rewrites etc.
 
We squash merge, so the intermediate commits don't need to build.

This PR was AI assisted. I have reviewed the changes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Rename ateom

5 participants