Linear provider
The Linear provider mounts your Linear workspace under /linear. Teams appear as directories; issues are subdirectories containing one file per field. Any tool that reads files, grep, awk, jq, shell scripts, can query your backlog without the Linear API or SDK.
Configuration
Section titled “Configuration”The provider requires a Linear personal access token. Create one at Settings → API → Personal API keys in the Linear app, then expose it as an environment variable before mounting:
export LINEAR_TOKEN=lin_api_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxomnifs mount /omnifsThe token needs at least read access to the teams and issues you want to browse. omnifs holds the credential in the host runtime; the provider WASM component never opens a socket itself.
Path layout
Section titled “Path layout”/linear/└── teams/ └── {KEY}/ └── issues/ ├── _open/ ← open issues only ├── _all/ ← every issue regardless of state └── {filter}/ └── {KEY-N}/ ├── title ├── state ├── priority ├── assignee └── description.md{KEY} is the Linear team identifier (e.g. ENG, SEC, INFRA). {filter} is either _open or _all. {KEY-N} is the full issue identifier including the team prefix (e.g. ENG-1421).
List all open issues for a team:
ls /omnifs/linear/teams/ENG/issues/_openENG-1387 ENG-1412 ENG-1421 ENG-1438Read the state of a specific issue:
cat /omnifs/linear/teams/ENG/issues/_open/ENG-1421/stateIn ProgressRead the full description:
cat /omnifs/linear/teams/ENG/issues/_open/ENG-1421/description.mdCheck priority and assignee together:
cat /omnifs/linear/teams/ENG/issues/_open/ENG-1421/prioritycat /omnifs/linear/teams/ENG/issues/_open/ENG-1421/assigneePriority values are the strings Linear uses: No priority, Urgent, High, Medium, Low.
Querying across issues
Section titled “Querying across issues”Because fields are files, standard Unix tools compose naturally.
Find all issues assigned to a specific person:
grep -rl "alice" /omnifs/linear/teams/ENG/issues/_open/*/assigneeList every high-priority open issue across two teams:
for team in ENG SEC; do for issue in /omnifs/linear/teams/$team/issues/_open/*/; do pri=$(cat "$issue/priority") if [ "$pri" = "High" ] || [ "$pri" = "Urgent" ]; then echo "$pri $(basename $issue) $(cat $issue/title)" fi donedoneSearch issue descriptions for a keyword:
grep -rl "rate limit" /omnifs/linear/teams/ENG/issues/_all/*/description.mdCount open issues per state:
for issue in /omnifs/linear/teams/ENG/issues/_open/*/; do cat "$issue/state"done | sort | uniq -c | sort -rnInode stability
Section titled “Inode stability”omnifs assigns stable inodes based on Linear’s issue IDs. An issue that moves from _open to _all (because it is closed) keeps the same inode. Scripts that track by inode stay correct across state transitions.
Caching
Section titled “Caching”The host cache is invalidated by upstream events from Linear’s webhook stream, not by TTLs. A freshly closed issue will disappear from _open when the event arrives rather than after an arbitrary interval. If you read a file immediately after an action in the Linear app, there may be a short propagation delay before the cache reflects it.
Wire operations
Section titled “Wire operations”Every read resolves through three operations in the omnifs:provider@1.0.0 WIT interface: lookup-child, list-children, read-file. There are no additional calls; the provider does not batch or prefetch.