Factory Droid
Local Droid sessions contain the richest Factory record. The cloud Sessions API is useful for hosted work but has a narrower transcript contract and may be enabled only for selected organizations.
Source IDs
Section titled “Source IDs”| Source | Use it for |
|---|---|
factory |
Local Droid JSONL transcripts and usage sidecars. |
factory-cloud |
Explicit, read-only Factory cloud Sessions API import. |
How the import works
Section titled “How the import works”The local importer reads each Droid JSONL transcript and joins its matching usage sidecars. It reconstructs user and assistant turns, reasoning, tool calls and results, file changes, model and usage data, and worker relationships in the order recorded by Factory. Worker runs are stored as linked conversations instead of being folded invisibly into the parent session.
The explicit cloud importer reads Factory’s Sessions API. When a cloud record matches an already imported local session by provider identity, Hansard keeps the richer local transcript and uses the cloud response to add hosted metadata. A cloud-only session is still archived from the chat and output the API returns, but cloud responses do not include tool arguments. Reimporting either source updates its existing session; access to cloud sessions can still depend on the organization’s API configuration.
Import and keep current
Section titled “Import and keep current”hansard import --source factory --since allhansard import factory-cloud --since allhansard index rebuildCloud access uses FACTORY_API_KEY or a configured Factory API key.
hansard config sources add factoryhansard watcher restartCloud imports remain explicit and are not part of all.
Review the import in the app
Section titled “Review the import in the app”After the import finishes, open Conversations and selectFilter & sort. Set Source toFactory Droid or Factory cloud sessions, choose the backfill window underTime, and use Folder when the same harness appears in several projects. Select a result to inspect its messages, tool calls and results, files, commits, model and usage fields, and source provenance in one conversation view.
For a local source that should stay current, open Settings → Indexing & Imports. Automatic follows detected local harnesses; Custom lets Sources scannedselect an explicit set. Explicit cloud and account-export sources do not turn into background network jobs here. If the expected result is absent after resetting the conversation filters, return to the terminal import in this guide and add --explain-skips where supported.
What Hansard preserves
Section titled “What Hansard preserves”- Local messages, tools, diffs, linked worker runs, and aggregate usage sidecars.
- Cloud session chat, status, repository attribution, and tool output returned by the Sessions API.
- The richer local transcript when the same cloud work has a local Droid copy.
Known limitations
Section titled “Known limitations”- Factory cloud endpoints may return
403when the organization does not have Sessions API access. - Cloud tool results do not include the arguments that produced them, so those sessions can contain results without matching tool calls.
- A cloud session without repository metadata remains uncategorized because its hosted working directory is not a local project path.
Refresh an existing archive
Section titled “Refresh an existing archive”hansard import --source factory --since allhansard import factory-cloud --since allhansard index rebuild