/linear/.
For API key setup, see Linear Setup.
Config
Fields marked secret are redacted in snapshots.
VFS.md
The VFS.md an agent reads with Linear mounted at/<path>.
- Rendered
- Raw
__ so that
VFS-specific commands can reference the correct VFS without
extra lookups.
Teams
Each team directory is named:team.jsonis the normalized team metadatamembers/contains one JSON file per memberissues/contains one directory per issueprojects/contains one JSON file per project, including lightweight related issue referencescycles/contains one JSON file per cycle
Issues
Each issue directory is named:issue.json— normalized issue metadata with command-aligned fields such asissue_id,issue_key,team_id,state_id, andassignee_idcomments.jsonl— normalized comment stream ordered bycreated_at
comments.jsonl is a Mirage representation chosen for shell-friendly
workflows. It is not a native Linear file format.
Members
Each member file is named:user_id and email
so the value can be reused directly in commands like linear issue assign.
Projects and Cycles
Project and cycle files are named:Documents
Each team has adocuments/ folder with one JSON file per Linear document:
Integration
What Linear answers through its own API, so fewer files are read. Integration explains each command.grep -rw and
rg -w ask Linear’s issue search for each word and read only the issues that
hold every word, where the search names it or the listing keeps it. The listing
keeps the issue’s other fields (team, project, cycle, state, people, labels,
dates, link) and each title or description word the search can miss, such as
one inside a link.
Every issue is read when the word is a key of the issue JSON (title,
priority) or a JSON literal, has a digit or only the letters a to f, which an
id can hold, and when a search fails, returns 250 issues or finds nothing. walk_limit: -1 in the mount’s "@all" command limit reads every file instead, since Linear indexes a write some time after it lands.
Members, projects, cycles and documents are listed with their whole JSON, so
grep -r and rg list them once more and read only the files whose text holds
the pattern’s text in any case, whatever walk_limit is. The issues
are listed once more too, so a change since the last listing is still found.
A file over 8 KiB, and every file for a text that is not ASCII, is read as
usual. Comments are always read: they are fetched per issue, and Linear’s
comment search can miss a word inside a link.
Cache
The Linear VFS usesIndexCacheStore (same as Discord and other
mounts). File bytes go through the workspace
file cache.
Example
Seeexamples/python/vfs/linear/linear.py for the full working example.
Finding IDs
IDs are embedded in directory and file names after__: