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/
│ ├── INDEX.md
│ └── 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>/, while Spaces/INDEX.md lists other authorized Spaces without hydrating every Space folder by default.

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
Spaces/INDEX.mdGenerated registry of authorized Spaces and active SpaceDo not edit; regenerate by rendering the Thread runtime
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}/
Spaces/INDEX.md, 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.

  • 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/.