Skip to content

[FEATURE]: Send instance guid on webhook structure #495

Description

@Shearerbeard

Summary

Make instance guid an argument so we know pod origin on HITL

Additional Context

No response

Upload screenshots

No response

Searched Issues

  • No similar issues found

Code of Conduct

  • I agree to follow this project's Code of Conduct

Activity

  1. Shearerbeard commented on Aug 18, 2026

    @Shearerbeard
    CollaboratorAuthor

    Again this is more governance transparency @dhable - it might be worth generating an identifying guid for what instance of aura a HITL interrupt came from

  2. dhable commented on Aug 26, 2026

    @dhable
    Contributor

    The easiest method for generating a guid would just be to generate a hash based off of the current timestamp at boot - e.g. UUID v4. We might also want something unique but stable across restarts to make it easier to correlate HITL requests across a longer time frame. We could build a guid using the following:

    instance_guid = uuidv5(aura_ns, instance_fingerprint)
      where
        aura_ns is something like "mezmo.com/aura:v1" and used to identify the 
        instance_fingerprint is both environment and config seed to identify where and what is running
    

    Since UUIDv5 is a stable hash, we should be able to track the same instance across restarts if we pick sane fingerprint values. These values are a fixed pattern concatenated bytes, prefixed by the number of bytes that follow to avoid ambiguity with multiple byte fields. Thus name="ab", alias="c" → 2:ab1:c vs name="a", alias="bc" → 1:a2:b

    To compute a unique environment seed (i.e. where the aura process is running), aura would use the following list in order:

    • AURA_INSTANCE_ID environment variable value. This allows for overriding the remaining values if desired.
    • k8s downward API ("{POD_NAMESPACE}:{POD_NAME}")
    • machine_uid crate to determine a HW identifier (/etc/machine-id for Linux, gethostuuid() for Mac, MachineGuid registry value for Windows)
    • If no value can be determined, then generate a random UUIDv4 value and emit a warning log with the suggestion to set AURA_INSTANCE_ID.

    To compute a unique config seed (i.e. what the process is running), aura would use the following list in order:

    • [agent].instance_seed (new property) from the config file
    • Agent name and alias fields ("{[agent].name}{[agent].alias}"). Since the agent name is required in the config, we should always have a value available. Does it make sense to guard against an empty string at this point?

    This identify value would then be exposed through the the web API, the session info, etc. for discovery by a consumer.

    While this makes it possible to identify a unique process/config combo (a pod/host running agent xyz), there is still an open question of how to discover these values. Does each aura instance publish them on boot though a webhook event stream? How does a consumer find all the values If there are multiple pods backing a k8s service? Walk a headless service? I get the sense that this card is about just establishing the unique values and then worrying about the communication of those values later.

    cc: @Shearerbeard / @henryjandrews

  3. Shearerbeard commented on Aug 26, 2026

    @Shearerbeard
    CollaboratorAuthor

    This works for me, the VFS session_guard work needs an instance guid so I'll probably use this for that work as well

  4. added 11 commits that reference this issue on Sep 2, 2026
    191e8a4
    cfced12
    624dc55
    566ce7c
    94aeadb
    91b9271
    57da796
    ba90dbc
    a184abc
    59e1ac7
    f21f4b5
  5. dhable commented on Sep 3, 2026

    @dhable
    Contributor

    Closing this out as it was merged into the nightly branch.

  6. added 3 commits that reference this issue on Sep 9, 2026
    5346b01
    76e2fa3
    48e4d90
  7. added 3 commits that reference this issue on Sep 10, 2026
    095bf44
    a72e221
    c787942
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions