Use the graph directory identifier
The first check was empty. One bounded message on the disposable course agent then produced two genuine success rows.
wc -l steps.jsonl for file line counts.Treat a trajectory as instrumentation
A trajectory records internal steps from a run. It is evidence of execution, not a route, schedule, or future plan.
Reuse the same identifier rule
Trajectory and graph commands both expect the directory name under the ArmaraOS agents tree.
List newest rows first
armaraos trajectory list <AGENT> --limit 5 --json
One recorded row has zero steps. The other has three. Keep both facts visible.
Remember the 500-row window
List is capped at 500. Search and analyze scan at most 500. An older missing run can simply be beyond that window.
Search across recorded content
armaraos trajectory search <AGENT> "ainl" --scan-limit 20
Search is case-insensitive across identifiers, session values, hashes, outcomes, and step text.
Read the aggregate before judging
armaraos trajectory analyze <AGENT>
Export one object per line
armaraos trajectory export <AGENT> -o steps.jsonl
JSONL is not one surrounding array. Each line is a complete JSON object.
Use time bounds when the store grows
--since-recorded-at <UNIX_SECONDS> is available on list, search, analyze, and export.
Check it / reconcile rows and steps
Explain two, three, and two.
The verified state has two trajectories, three total steps, and two JSONL lines. Point to each source.
Trajectory step text can include prompts and tool details. Read and redact the JSONL before sharing it.
Troubleshooting for this sitting
| What you see | Likely cause | What to do |
|---|---|---|
| List is empty | No runtime trajectory was recorded. | Run one bounded task, then recheck. |
| A row has zero steps | Outcome exists without step detail. | Do not call it a failure. |
| Old run is missing | It is outside the 500-row window. | Export regularly and use time filters. |
| Parser rejects the export as an array | The format is JSONL. | Parse one line at a time. |