Skip to Content
DashboardAgents
Raw

Agents in the Aetherfy dashboard

What the Aetherfy dashboard’s Agents area is

The Agents area of the Aetherfy dashboard, at app.aetherfy.com/dashboard/agents , has three places:

AddressWhat it is
/dashboard/agentsThe inventory: one card per agent, deployed agents first, then the ones not deployed yet
/dashboard/agents/{name}One agent’s record. Its root is the agent’s deployments; a second tab holds its logs
/dashboard/agents/configuratorA form that writes an aetherfy.yaml for you to copy. It reads and writes no agent

An Aetherfy agent’s configuration lives in its aetherfy.yaml, and the dashboard shows it read-only: memory, runtime, always-on, workspace and schedule change when you edit the file and deploy (see the aetherfy.yaml reference). What the dashboard does change is operational: pausing, archiving, running, rolling back, and the GitHub link.

The Aetherfy agent status badge

Every Aetherfy agent card, and the agent’s record, carries one status badge followed by the words last known. The badge is the status Aetherfy last recorded, not a check made when the page loaded — reading an agent’s live machines would wake a sleeping one and bill it. For a live answer use afy status <agent> or GET /api/v1/agents/{agent}/status.

The dashboard prints a status in capitals, with underscores as spaces (usage_paused reads USAGE PAUSED). The values are the ones the agent API returns:

LabelMeaning
pendingCreated; nothing built yet
buildingA deployment is building
deployingBuilt; machines coming up
runningServing
failedThe last deployment failed, or the compute plane lost the agent’s app or image (the card says which)
pausedYou paused it. Resume it to serve again
Usage PausedAetherfy paused it because your plan’s usage limit was reached; the badge’s tooltip says so. Raise your spend limit or upgrade
stoppedAetherfy stopped it because the account was suspended
suspendedAccount-level suspension
archivedTorn down to free its quota slot; configuration and code kept
deletingBeing deleted

last known is the literal mark beside the badge; its tooltip reads Last known state from our records, not a live check.

Badges beside the Aetherfy agent status

These appear on an Aetherfy agent card after the status, only when they apply.

LabelMeaning
Starting once its stop finishesYou resumed the agent while its previous stop was still finishing. Aetherfy accepted the start and carries it out when the stop completes; the status stays paused until then. You can leave the page
Starting on a new machineYou resumed the agent and its machine’s host had no room, so Aetherfy is starting it on a new machine from its current release
StartingA start is on its way for a reason this dashboard build does not name
Start droppedA start you asked for was not carried out. The line under the badge says why (see the next table)
ALWAYS-ONkeep_alive is on: the agent never sleeps
DOCKERA custom-Dockerfile agent. Aetherfy injects no runner, so it does not inspect what the image serves
WEBSOCKETDetected from the running app: it serves WebSocket routes as well as HTTP
HTTPDetected from the running app: HTTP only. No badge at all means Aetherfy has not observed the app yet
AUTO-DEPLOYLinked to a GitHub repository; every push to the tracked branch deploys the agent
AUTO-DEPLOY OFFLinked, but pushes are not deploying: the account’s GitHub connection was removed, or the tracked branch was deleted. The tooltip says which; the link is kept
PUSH WAITINGFollowed by a commit. A push arrived while a deploy was in progress and deploys when it ends, unless a newer push arrives first — see GitHub integration
DEGRADEDFollowed by regions ready out of regions total: a multi-region deploy is still converging in the background

While a start is on its way, the pause control on the card withdraws it rather than starting a second one: the latest intent wins, as with afy stop (pausing and resuming).

Notes under the Aetherfy agent badges

LabelMeaning
Started on a new machine: a cold startThe last start recreated the agent’s machines on a new host, so it was a cold start rather than a resume. Shown until the agent is paused again
it was archivedWhy a start was dropped: the agent was archived
it was deletedWhy a start was dropped: the agent was deleted
a spend-limit pause or an account suspension took itWhy a start was dropped: a billing hold
the agent failed (its app or image was lost)Why a start was dropped: the agent failed
its stop never finished, so it was not startedWhy a start was dropped
its start never finishedWhy a start was dropped
it left paused another wayWhy a start was dropped: something else changed the agent’s state first
the platform could not carry it outWhy a start was dropped, for a reason this dashboard build does not know

The dashboard prints each reason as a sentence, capitalised. The same reasons are resume.reason on the agent (starting while the previous stop is still finishing).

When an Aetherfy agent carries a failure reason, on any status, the card shows the control plane’s sentence for it in a panel under the card, with the afy command that acts on it: afy deploy <agent> when the app, image or machine was lost or every machine is failing its health check (a running agent can carry those last two), and afy restore <agent> once a refused restore’s cause (the plan’s agent limit, the usage limit, a payment, the plan’s settings) is dealt with. The reasons are the agent’s failure_code values, listed at listing and reading agents.

The Aetherfy agent card’s fields

LabelMeaning
TYPESERVICE or JOB
RUNTIMEThe runtime, e.g. python3.11, or dockerfile
MEMORYMemory per machine, in MB
ALWAYS-ONON or OFF — set keep_alive in aetherfy.yaml to change it
WORKSPACEThe agent’s workspace; absent when it has none
SCHEDULEThe 5-field cron expression, evaluated in UTC — only on a scheduled task
NEXT RUNWhen the schedule fires next, in your local time, or Paused
LAST TICKShown only when the schedule’s last decision did not start a run: skipped or missed, with the reason as its tooltip
LAST RUNThe newest run’s state and age, or Never
ALLOWED WORKERSThe task agents this service may spawn (allowed_workers in aetherfy.yaml)
SPAWNABLE BYThe services whose allowed_workers names this task
IDThe first characters of the agent’s id

A run’s state reads like a deployment’s (next section): completed for a run that finished, failed for one that did not.

When a scheduled run was blocked by a billing limit, the card shows Scheduled runs are blocked: plan limit reached. until a later run fires.

The Aetherfy agent card’s actions

Each Aetherfy action in the dashboard is a call to the control plane that the CLI and the REST API make too.

ActionShown whenCLIREST
NEW_AGENT — registers an agent: name, runtime, type, description, workspaceAlwaysafy create (creating an agent)POST /api/v1/agents (lifecycle)
Pause / resumeDeployed and running, paused or failedafy stop / afy startPOST /api/v1/agents/{agent}/stop, /start
ArchiveDeployed and running or pausedafy archivePOST /api/v1/agents/{agent}/archive
Restorearchivedafy restorePOST /api/v1/agents/{agent}/restore
RUN NOW — one run, no payloadDeployed and running or stoppedafy run (on demand)POST /api/v1/agents/{agent}/run (runs)
Pause / resume the scheduleA scheduled taskafy schedule pause / resumePOST /api/v1/agents/{agent}/schedule/pause, /resume
Run history — the last runs, each linking to its logsDeployedafy runsGET /api/v1/agents/{agent}/runs
LogsAlwaysafy logs (logs)GET /api/v1/agents/{agent}/logs
MORE → GITHUB LINK — link, re-link or unlink a repositoryAlwaysafy github link / unlink (GitHub)POST / DELETE /api/v1/agents/{agent}/github
MORE → DOWNLOAD YAML — the agent’s current configuration as aetherfy.yamlAlwaysafy pullGET /api/v1/agents/{agent}/yaml
Delete — type the agent’s name to confirmAlwaysafy deleteDELETE /api/v1/agents/{agent}
DEPLOYMENTS — opens the agent’s recordAlwaysafy deploymentsGET /api/v1/agents/{agent}/deployments

Archiving and restoring are explained at Running and managing agents; a restore refused by the plan’s agent limit opens an upgrade prompt rather than an error.

The Aetherfy agent record: deployments

An Aetherfy agent’s record, /dashboard/agents/{name}, opens on its deployments: one row per version, newest first, with VERSION, STATE, REGIONS, CREATED, DEPLOYED and OPERATION. Expanding a row adds its deployment id, image size, queue position, start time, regions ready and — for a failed build — BUILD OUTPUT, the tail of the build log. The page re-reads itself while a deployment is in flight. Below the versions, the record lists the collections the agent was observed reading or writing.

LabelMeaning
queuedWaiting for a builder
buildingBuilding the image
deployingBuilt; machines coming up and health-checked. The previous version keeps serving meanwhile
activeServing. The serving row is also marked → CURRENT
failedDid not deploy. The expanded row carries the reason
supersededA newer deployment replaced it
rolled_backReplaced by a rollback to an earlier version
NO DEPLOYMENTS YETThe agent has never been deployed

The states are the ones the deployments API returns, printed in capitals with underscores as spaces, the same way as an agent’s status (rolled_back reads ROLLED BACK).

ActionCLIREST
Roll back to a version — re-deploys that version’s image, or rebuilds it from its stored code when the image is goneafy rollback <agent> <version> (rollback)POST /api/v1/agents/{agent}/deployments/{version}/rollback
Redeploy a version — rebuilds that version’s code with the current secretsafy redeploy <agent> <version>POST /api/v1/agents/{agent}/deployments/{version}/redeploy

Each is offered only on the versions the API says it can do it for. Both ask for confirmation and both create a new version; see Rollback and Secrets for when to pick which. A rollback or redeploy refused by your plan’s current limits opens an upgrade prompt.

When the agent is archived, a line above both tabs says its app was destroyed, so nothing in the list is serving, and that restoring it is the way back.

The Aetherfy agent record: logs

The LOGS tab of an Aetherfy agent’s record shows its log lines with TIME, LEVEL, STREAM and MESSAGE, filtered by time window, text search, level (INFO, WARN, ERROR, DEBUG, SYSTEM) and stream (stdout, stderr, system). FOLLOW polls for new lines. Opened from the run history, it is scoped to one run. It is the same data as afy logs (logs) and GET /api/v1/agents/{agent}/logs (runs and logs).

LabelMeaning
NO LOGS FOUNDNothing matches the filters in the window
LIVEFollowing new lines

The Aetherfy YAML configurator

The configurator at /dashboard/agents/configurator, reached from CONFIGURATOR on the inventory, builds an aetherfy.yaml from a form — name, type, runtime, regions, memory, idle timeout, always-on, spawning, a schedule with a preview of its next runs, workspace and GitHub dependencies — and gives you the text to copy. It registers, deploys and changes nothing; deploy the file with afy deploy. afy init writes a starting file from the terminal (afy init), and Scheduled tasks covers the schedule fields.

When the Aetherfy control plane cannot be reached

If the Aetherfy control plane does not answer, the inventory falls back to what Aetherfy has stored and says so:

LabelMeaning
LAST-KNOWN INVENTORYThe banner: this list is read from stored records
ON RECORD —Followed by how many agents are on record
NO AGENTS ON RECORDThe stored records hold no agent

Every action is disabled in this state, with the reason beside it: the control plane carries out every action on the page. The agents themselves are not affected.

What the Aetherfy dashboard does not do for agents

Not in the dashboardWhere instead
Deploy new codeafy deploy (deploying), or a push to a linked repository (GitHub)
Rename an agentafy rename only — it also rewrites the name: in your local aetherfy.yaml, which a browser cannot reach (renaming)
Change memory, regions, always-on, idle timeout or the scheduleEdit aetherfy.yaml and deploy
Change an agent’s workspace or descriptionafy update (updating) or PATCH /api/v1/agents/{agent}
Cancel a queued or building deploymentafy cancel or POST /api/v1/agents/{agent}/deployments/{version}/cancel
Run with a payloadafy run --payload
Spawn a workerPOST /api/v1/agents/{agent}/spawn from your service (spawning)
Read live machine stateafy status or GET /api/v1/agents/{agent}/status
Manage an agent’s secretsThe Secrets area
Last updated on