where logs live
A separate observability tool — if you have access — or nothing at all.
In the deployment timeline, per stage, expandable the moment it goes red.
Your deploy just failed and most platforms send you somewhere else to find out why — a separate logs tool, a Grafana dashboard, cluster access you may not have — or they give you nothing but 'deploy failed'. a2a cloud surfaces the actual build and runtime logs right in the deployment timeline: Gitea Actions build logs, the image build, Argo sync status, and pod readiness and crash logs. So you can see exactly which stage broke and why.
per-stage status · bounded logs · crashloop history · secrets scrubbed
When an agent deploy breaks, the platform usually hands you a dead end: a generic 'deploy failed', or a link to a separate observability stack you have to context-switch into — assuming you have the access. The logs that would tell you what actually went wrong are scattered across CI, the image build, the GitOps controller, and the pod — and on a crashloop the one log line you need scrolls away when Kubernetes restarts the container. So a small failure becomes a hunt across four tools while your agent is down.
a2a proxies the real logs into the deployment view, stage by stage — source, build, runtime, agent card, skills, verify — each with its own status and expandable logs. Build output from Gitea Actions, Argo sync state, and pod logs, including previous-container output on a crashloop, are bounded and scrubbed before display. The deployment record keeps commit, image, events, logs, and verification together; it is not an ExecutionReceipt.
A failed dependency install, a syntax error, a missing lockfile — the build stage goes red and expands to the actual Gitea Actions log. You read the failing step and the traceback inline, in the timeline, instead of hunting for a CI run in a separate tab.
If the container image can't be built — a bad base image, a COPY that misses a file, an OOM during compile — the image stage surfaces the build output directly. You see the exact layer and command that failed, not just 'deploy failed'.
When the pod won't stay up, the runtime log view fetches a bounded, scrubbed pod-log tail — and on a crashloop it also surfaces the previous container's output, so the stack trace from before Kubernetes restarted it remains available in the deployment record.
If the deploy is stuck because Argo hasn't synced — a manifest diff, a pending sync wave, a health check that never goes green — the timeline shows Argo sync status per source. You see it's a reconcile problem, not your code, without opening the Argo UI.
The verify stage fetches the live Agent Card and checks that it exposes a valid skill surface. If the card won't load or contains no callable skills, the timeline identifies that discovery failure instead of hiding it behind a green 'running' pod. Exercising a skill's behavior requires a separate invocation-based smoke test.
Missing env, an unbound secret, a grant the agent needs but wasn't given — these show up as the runtime stage failing on startup, with the pod log explaining what it couldn't reach. Secrets are scrubbed before display, so you get the diagnosis without leaking the value.
A separate observability tool — if you have access — or nothing at all.
In the deployment timeline, per stage, expandable the moment it goes red.
'Deploy failed.' You reverse-engineer where in the pipeline it broke.
source → build → runtime → agent card → skills → verify, each with its own status.
The pod restarts and the crash log scrolls away before you can read it.
Previous-container logs are surfaced automatically on a crashloop.
kubectl, Grafana, or Argo access — plus permission to reach the cluster.
None. The logs are proxied into the dashboard, secrets scrubbed.
You trust the console said 'success' at some point.
Commit, image, stages, logs, and verification live on the deployment record; signed receipts belong to invocations.
Open the deployment timeline and look for the red stage. a2a breaks the deploy into source → build → runtime → agent card → skills → verify, each with its own status. Expand the failing stage and it shows the actual logs — Gitea Actions build output, the image build, Argo sync status, or the pod's runtime log — so you read the real error at the exact stage that broke instead of guessing from a generic 'deploy failed'.
A deploy stuck at build usually means the Gitea Actions build is still running or the expected image has not reconciled yet. Open the build log view to fetch the latest bounded Actions tail and see whether a dependency step is slow, hanging, or failed. If the build passed and progress is stuck later, inspect the Argo and runtime stages to see whether the expected image and Knative service have converged.
You don't need kubectl or cluster access. The runtime stage in the deployment timeline proxies the pod logs straight into the dashboard, with secrets scrubbed before display. If the pod is crashlooping, a2a also surfaces the previous container's logs, so the stack trace from the crash is right there even though Kubernetes already restarted the container.
Start with the verify stage: after the runtime is ready, a2a fetches the live Agent Card and checks that it advertises a valid skill surface. That catches discovery and packaging failures, but it does not execute each skill. To debug behavior, invoke the affected skill with a bounded smoke input. That real invocation is separate from the deployment record and can emit a signed ExecutionReceipt for the run.
No. The whole point of the log-proxied timeline is that you debug a failed deploy from the deployment view, not a war room. Build logs, image build output, Argo sync status, and pod runtime logs — including previous-container logs on a crashloop — are surfaced in the dashboard with secrets redacted. No kubectl, no Grafana, no cluster credentials required.
All guides live in the guides index.
a2a cloud deploys managed agents with the real build and runtime evidence in a per-stage deployment timeline: Gitea Actions output, expected image and source revision, Argo sync, pod readiness and crashloop history, live Agent Card, and advertised skills — bounded and secrets scrubbed, with no cluster or Grafana access needed. The deployment record tells you what release failed and where; a separate skill invocation can emit a signed ExecutionReceipt when you need run-level evidence.