Workspace configuration
The root-only fuse.json and .fuseignore contract used by Fuse 4.4.
Fuse reads workspace configuration only from the repository root. The supported files are
fuse.json and .fuseignore. Fuse does not read .fuserc, parent-directory configuration,
or legacy emission, tokenizer, cache, and solution settings.
fuse.json
fuse init creates a root fuse.json using this schema:
{
"$schema": "https://fuse.codes/schema/v4.4/fuse.schema.json",
"workspace": "src/Product.slnf",
"ignore": [
"vendor"
]
}Both properties are optional. fuse init writes workspace only when it finds one
unambiguous product target. Otherwise it prints the candidates and leaves the property out.
| Key | Type | Meaning |
|---|---|---|
$schema | string | The v4.4 schema identifier. It is informational and lets editors validate the file. |
workspace | string | An in-repository .sln, .slnx, .slnf, or .csproj used by explicit semantic indexing and compiler-backed requests. Relative paths resolve from the repository root and must not escape it. |
ignore | array of strings | Extra directory names or paths to exclude from inventory. Entries are combined with .fuseignore and the built-in exclusions. |
Unknown keys produce a visible warning. Wrong property types, malformed JSON, an unsupported workspace extension, or a workspace path outside the repository fail the request and name the property that needs correction. Fuse never silently selects an ambiguous full solution by path order.
Workspace selection uses this order:
- The
workspacevalue infuse.json. - One root product
.slnf. - One root product
.slnxor.sln. - The owning
.csprojfor a file-specific compiler request. - An actionable ambiguity response that lists candidates and tells you to set
workspace.
All indexed MCP tools except fuse_reduce resolve the nearest enclosing Git repository first.
That normalized repository root owns the daemon, job manager, index file, and configuration.
A nested request does not change the scan root. A folder outside Git returns
workspace_identity_unresolved: before Fuse starts an index or writes data.
.fuseignore
.fuseignore is a root-only line-oriented list of additional paths or directory names to
exclude. Blank lines and lines beginning with # are ignored. It complements ignore; it
does not replace built-in exclusions such as .git, .fuse, bin, obj, and
node_modules.
Use fuse.json for shared, editor-validated workspace intent and .fuseignore for a short
repository-specific exclusion list.
Runtime environment
Environment variables configure runtime behavior, not fuse.json parsing:
| Variable | Default | Description |
|---|---|---|
FUSE_DAEMON | 1 for mcp serve | Set to 0 to run the same job and compiler services in process instead of delegating to the shared host daemon. |
FUSE_EAGER_INDEX | 1 | Set to 0 to skip the optional eager syntax job at daemon or MCP startup. The first eligible read still starts or joins the syntax job. |
FUSE_COLD_READ_DEADLINE_MS | 2500 | The maximum cold-read wait for syntax rows before Fuse returns a bounded job header. |
FUSE_MAX_FILE_BYTES | 5242880 | Files larger than this retain inventory metadata with index_detail=inventory_only. A non-positive value disables the cap. |
FUSE_RESIDENT | 0 | Set to 1 to hold resident compiler state for low-latency overlay checks. |
FUSE_WARM_SOLUTION_CAP | 3 | Maximum held MSBuild solution states per host root. |
FUSE_WARM_SOLUTION_IDLE_MINUTES | 30 | Idle eviction window for held MSBuild solutions. |
FUSE_CHECK_WORKER_CAP | 2 | Maximum pooled capture-check workers per host root. |
FUSE_CHECK_WORKER_IDLE_MINUTES | 30 | Idle eviction window for capture-check workers. |
FUSE_COMPILER_STATE_CAP | 1 | Per-root budget shared by resident, warm-solution, and capture-worker compiler state. |
FUSE_WATCH | 1 | Set to 0 to disable watcher-triggered refresh jobs; read-time reconcile remains the backstop. |
FUSE_UPDATE_CHECK | 1 | Set to 0 to disable update notices. |
FUSE_BG_UPGRADE is removed. Fuse does not run a background workspace-wide compiler pass
after syntax indexing. Use fuse index --semantic when that work is wanted.
Next
Use Commands for fuse init, index lifecycle, and cleanup.
Read Connect your coding agent for MCP installation and
Shared daemon for job ownership.