3.6 to4.0containeragentaction-failaction-getaction-logaction-setapplication-version-setclose-portconfig-getcredential-getgoal-stateis-leaderjuju-logjuju-rebootleader-getleader-setnetwork-getopen-portopened-portspayload-registerpayload-status-setpayload-unregisterrelation-getrelation-idsrelation-listrelation-model-getrelation-setresource-getsecret-addsecret-getsecret-grantsecret-idssecret-info-getsecret-removesecret-revokesecret-setstate-deletestate-getstate-setstatus-getstatus-setstorage-addstorage-getstorage-listunit-getjuju CLIjuju CLI commandsjujuactionsjujuadd-cloudjujuadd-credentialjujuadd-k8sjujuadd-machinejujuadd-modeljujuadd-secretjujuadd-secret-backendjujuadd-spacejujuadd-ssh-keyjujuadd-storagejujuadd-unitjujuadd-userjujuagreejujuagreementsjujuattach-resourcejujuattach-storagejujuautoload-credentialsjujubindjujubootstrapjujucancel-taskjujuchange-user-passwordjujucharm-resourcesjujucloudsjujuconfigjujuconstraintsjujuconsumejujucontroller-configjujucontrollersjujucreate-backupjujucreate-storage-pooljujucredentialsjujudashboardjujudebug-codejujudebug-hooksjujudebug-logjujudefault-credentialjujudefault-regionjujudeployjujudestroy-controllerjujudestroy-modeljujudetach-storagejujudiff-bundlejujudisable-commandjujudisable-userjujudisabled-commandsjujudocumentationjujudownloadjujudownload-backupjujuenable-commandjujuenable-destroy-controllerjujuenable-hajujuenable-userjujuexecjujuexport-bundlejujuexposejujufindjujufind-offersjujufirewall-rulesjujugrantjujugrant-cloudjujugrant-secretjujuhelpjujuhelp-action-commandsjujuhelp-hook-commandsjujuimport-filesystemjujuimport-ssh-keyjujuinfojujuintegratejujukill-controllerjujuloginjujulogoutjujumachinesjujumigratejujumodel-configjujumodel-constraintsjujumodel-defaultsjujumodelsjujumove-to-spacejujuofferjujuoffersjujuoperationsjujupayloadsjujurefreshjujuregionsjujuregisterjujureload-spacesjujuremove-applicationjujuremove-cloudjujuremove-credentialjujuremove-k8sjujuremove-machinejujuremove-offerjujuremove-relationjujuremove-saasjujuremove-secretjujuremove-secret-backendjujuremove-spacejujuremove-ssh-keyjujuremove-storagejujuremove-storage-pooljujuremove-unitjujuremove-userjujurename-spacejujuresolvedjujuresourcesjujuresume-relationjujuretry-provisioningjujurevokejujurevoke-cloudjujurevoke-secretjujurunjujuscale-applicationjujuscpjujusecret-backendsjujusecretsjujuset-application-basejujuset-constraintsjujuset-credentialjujuset-firewall-rulejujuset-model-constraintsjujushow-actionjujushow-applicationjujushow-cloudjujushow-controllerjujushow-credentialjujushow-machinejujushow-modeljujushow-offerjujushow-operationjujushow-secretjujushow-secret-backendjujushow-spacejujushow-status-logjujushow-storagejujushow-taskjujushow-unitjujushow-userjujuspacesjujusshjujussh-keysjujustatusjujustoragejujustorage-poolsjujusubnetsjujususpend-relationjujuswitchjujusync-agent-binaryjujutrustjujuunexposejujuunregisterjujuupdate-cloudjujuupdate-credentialjujuupdate-k8sjujuupdate-public-cloudsjujuupdate-secretjujuupdate-secret-backendjujuupdate-storage-pooljujuupgrade-controllerjujuupgrade-machinejujuupgrade-modeljujuusersjujuversionjujuwait-forjujuwait-for_applicationjujuwait-for_machinejujuwait-for_modeljujuwait-for_unitjujuwhoamijuju environment variablesjuju-metadatajuju-dashboard (The Juju dashboard)juju web CLIjujucjujudIn Juju, anagent is ajujud /containeragent process that works to realise the state declared by a Juju end-user with a Juju client (e.g.,the juju CLI) for a Juju entity (e.g.,controller,model,machine,unit) viaworkers.
On machines, an agent is managed bysystemd.
On machine and Kubernetes clouds, ajujud process running workers responsible for acontroller. This includes, among others, theapiserver worker, which is responsible for running the Juju API server.
On machine clouds, ajujud process running workers responsible for amachine.
On machine and Kubernetes clouds, ajujud process running workers responsible for all themodels associated with a given controller.
On machine / Kubernetes clouds, ajujud /containeragent process responsible for aunit.
When a Juju user uses the client (e.g., types a command in the CLI), this goes to the controller agent’sapiserver, which passes it on to the database. The database runs a background process that checks if anything has changed and, if so, emits an event (think “I’ve seen something that’s changed. Do you care about it?”). The event cascades through Juju. The unit agent becomes aware of it by always polling the controller agent as part of a reconciliation loop trying to reconcile the unit agent’s local state to the remote state on the controller (i.e., the state in the controller’s database).