Skip to content

Reading the Workspace Tree

The workspace tree is meant to be legible. Folder names come from human names, sanitized for filesystems, with a suffix only when needed to avoid collision. UUIDs remain in the database as stable identity; paths are for humans and agents.

Workspace
├── Agent
│ ├── AGENTS.md
│ ├── CONTEXT.md
│ ├── GUARDRAILS.md
│ ├── TOOLS.md
│ ├── memory/
│ └── skills/
├── Spaces
│ └── board-pack/
│ ├── CONTEXT.md
│ ├── artifacts/
│ ├── docs/
│ ├── goals/
│ │ └── customer-onboarding/
│ └── plans/
└── User
├── USER.md
└── memory/

Settings -> Workspace shows the editable source workspace. The S3 backing keys are tenant-scoped (tenants/acme/agents/..., tenants/acme/spaces/..., tenants/acme/users/...), but operators should think in terms of these three roots.

When a turn starts, ThinkWork hydrates a different tree into /workspace:

/workspace
├── AGENTS.md
├── CONTEXT.md
├── skills/
├── workspaces/
├── Spaces/
│ └── board-pack/
│ ├── SPACE.md
│ ├── CONTEXT.md
│ ├── artifacts/
│ ├── docs/
│ ├── goals/
│ ├── plans/
│ └── workflows/
├── User/
│ ├── USER.md
│ └── memory/
└── Thread/
├── THREAD.md
├── GOAL.md
├── PROGRESS.md
├── TASKS.md
└── notes/

The Agent source becomes the root of /workspace. User context stays explicit under User/. The active Space is hydrated under Spaces/<active-space>/. Other authorized Spaces are not hydrated by default; they are listed in the generated Workspace Routing section of AGENTS.md, which the renderer composes from authorization state (active Space, other authorized Spaces, acting user, participants, and Agent Profiles) and which replaces the former Spaces/INDEX.md. The agent reads non-active Spaces read-only through the fetch_workspace_source tool.

Thread runtime folders in S3 hold .hydrate_manifest.json, .rendered_at, generated Thread projection files, and writable Thread/notes/ files. The manifest points back to the Agent, Space, User, and Thread sources used for hydration and write-back.

PathMeaningEdit how
AGENTS.mdAgent identity, routing, and high-priority instructionsEdit Agent source
CONTEXT.mdDurable Agent-level contextEdit Agent source
Workspace Routing section of AGENTS.mdGenerated routing: authorized Spaces, acting user, participants, Agent ProfilesDo not edit; recomposed on every render
Spaces/<space>/SPACE.mdActive Space manifest, workflow, and policy overviewEdit Space source
Spaces/<space>/CONTEXT.mdActive Space contextEdit Space source
User/USER.mdUser/requester contextEdit user/profile source, not the runtime copy
User/memory/*.mdUser-scoped working memory notesEdit User source
skills/<slug>/SKILL.mdInstalled skill instructionsInstall or update skills
Spaces/<space>/goals/<template>/GOAL.mdReusable Space Goal templateEdit Space source
Thread/THREAD.mdGenerated Thread summaryUse Thread actions; runtime projection is read-only
Thread/GOAL.mdGenerated current Goal projectionUse Goal actions; runtime projection is read-only
Thread/PROGRESS.mdGenerated progress projection from database task rowsUse set_task_status or UI actions
Thread/TASKS.mdGenerated checklist/task projectionUse set_task_status or UI actions
Thread/notes/*.mdThread-scoped working notes and findingsAgent or operator can edit as narrative work
.hydrate_manifest.jsonRuntime source map, provenance, ETags, and read-only mountsDo not edit; regenerate by rendering the Thread runtime
.rendered_atRuntime freshness markerDo not edit

Reconcile routes changed files back to their owning source:

Runtime path patternOwner laneBacking source
Agent root files and skills/**Agenttenants/{tenant}/agents/{agent-folder}/
Spaces/<space>/** docs, artifacts, plans, and workflowsSpacetenants/{tenant}/spaces/{space-folder}/
User/** user context and memoryUsertenants/{tenant}/users/{user-folder}/
Thread/notes/**Thread notestenants/{tenant}/threads/{thread-folder}/
Thread/THREAD.md, Thread/GOAL.md, Thread/PROGRESS.md, Thread/TASKS.mdStatusGenerated read-only projection

If a changed file does not map to an allowed lane, reconcile rejects it and records the rejection on the turn. The generated Workspace Routing section of AGENTS.md is likewise render output: the composer strips and rebuilds it on every render, so hand edits to that section do not persist.

  • Use Agent folders for behavior that should apply everywhere.
  • Use Space folders for project, customer, workflow, and shared team context.
  • Use User folders for requester-specific context.
  • Use Thread notes for raw findings that belong to the current thread.
  • Use platform actions and tools for task status, review gates, access, and policy.
  • Treat runtime metadata as rebuildable output.
  • In runtime smoke tests, expect Spaces/, User/, and Thread/; reject top-level Agent/, singular Space/, root USER.md, workspace/, source/, and workspace-archives/.