Skip to content
Download PDF

Team Collaboration ​

Because .forge/ is git-committed, Forge is a team tool by default. Teammates share specs, changes, config, and memory by pushing and pulling, and every action on a change is attributed to the person who ran it.

Sharing through git ​

.forge/ lives in the repo, so pushing and pulling shares specs, changes, config, and memory with the rest of the team.

  • memory.team_sync exports memory as committable, deduplicated chunks. It is on by default when the repo has a remote, so shared memory travels with the code.
  • config.yaml is the shared configuration, committed for everyone.
  • config.local.yaml is per-machine and gitignored — your local overrides never leak into the team's config.

Shared vs. local

Put team decisions in config.yaml; keep machine- or person-specific settings in config.local.yaml. The split keeps the shared config clean and reproducible.

Attribution ​

Every session-timeline event is stamped with the git identity that ran it. The actor is resolved in order:

text
FORGE_ACTOR (env)
  → git config user.name  (with email as "Name <email>")
  → USER
  → "unknown"

So on a shared repo you can always see who did what — including which teammate a verify verdict, a breaker trip, or a spend record belongs to.

Contributor rollup ​

Each change shows its distinct contributors, deduplicated and sorted from the timeline actors:

  • a 👥 <names> chip on the dashboard card and detail page,
  • a contributors: line in the TUI Project Status screen.

Example timeline with two contributors ​

text
$ forge trace show --change checkout
[1] 2026-07-15T09:02:11Z note   — change opened: checkout redesign  · María (backend)
[2] 2026-07-15T09:14:52Z tool   — agent tool use                    · Claude (agent)
[3] 2026-07-15T09:31:40Z verify — Verdict: FAIL (1/3)                · Claude (agent)
[4] 2026-07-15T09:48:19Z verify — Verdict: PASS (streak reset)       · María (backend)

Here the change's contributor rollup would read 👥 María, Claude.

Force a specific actor in CI

Set FORGE_ACTOR when the git identity is not the real author — for example in a CI job or a shared automation account — so timeline attribution stays meaningful.

Next steps ​