GitHub-Native Operational Memory
How Locus maps its data model onto native GitHub primitives with zero infrastructure.
Overview
Locus has no custom backend. It uses GitHub Issues, Milestones, Labels, and Pull Requests as its entire data layer. Every read and write goes through the gh CLI, which handles authentication, rate limiting, and API access.
This means:
Zero infrastructure to deploy or maintain
Full transparency -- all task state is visible in your GitHub repository
Works with your existing workflow (issue templates, project boards, branch protection rules)
No additional accounts, API keys, or services
Data Model Mapping
Task
Issue
Each task is a GitHub Issue with structured labels
Sprint
Milestone
Sprints group issues under a Milestone
Metadata
Labels
Priority, type, status, order, and agent management
Deliverable
Pull Request
Each completed task produces a PR
Auth
gh auth login
Single authentication flow for everything
Label Schema
Locus uses a structured label system to encode task metadata. Labels are created automatically during locus init.
Priority Labels
Priority labels indicate how important a task is:
p:critical
#B60205
Critical priority
p:high
#D93F0B
High priority
p:medium
#E99695
Medium priority
p:low
#F9D0C4
Low priority
Type Labels
Type labels classify the nature of the work:
type:feature
#0075CA
New feature
type:bug
#1D76DB
Bug fix
type:chore
#5319E7
Maintenance/chore
type:refactor
#6E5494
Code refactoring
type:docs
#0E8A16
Documentation
Status Labels
Status labels track where a task is in the execution lifecycle. Locus updates these automatically as it processes tasks:
locus:queued
#C2E0C6
Queued for execution
locus:in-progress
#0E8A16
Currently being executed
locus:in-review
#FBCA04
PR created, awaiting review
locus:done
#006B75
Completed successfully
locus:failed
#B60205
Execution failed
Order Labels
Order labels define the execution sequence within a sprint:
order:1
#CCCCCC
Sprint execution order 1
order:2
#CCCCCC
Sprint execution order 2
order:3
#CCCCCC
Sprint execution order 3
...
#CCCCCC
And so on
Order labels are created on demand as tasks are assigned execution positions.
Agent Label
A single label identifies issues managed by Locus:
agent:managed
#7057FF
Managed by Locus AI agent
How It Works in Practice
Creating a Task
When you run locus issue create, Locus calls gh issue create with the appropriate labels and milestone:
This creates a GitHub Issue with labels type:feature, p:high, and locus:queued, assigned to the "Sprint 1" Milestone.
Running a Sprint
When you run locus run, Locus:
Calls
gh api repos/{owner}/{repo}/milestonesto find the active sprintCalls
gh issue list --milestone "Sprint 1"to fetch all issuesReads
order:Nlabels to determine execution sequenceFor each task, updates labels via
gh issue edit(e.g., removeslocus:queued, addslocus:in-progress)After successful execution, creates a PR via
gh pr createUpdates labels to
locus:done
Viewing Progress
Because everything is stored in GitHub, you can check sprint progress using standard GitHub tools:
GitHub Issues tab -- filter by milestone and status labels
GitHub Milestones page -- see completion percentage
GitHub Pull Requests tab -- review deliverables
Locus CLI --
locus sprint showandlocus status
Why This Approach
Zero Infrastructure
There is no server to deploy, no database to manage, and no SaaS subscription. Locus runs entirely on your machine and talks to GitHub's existing API.
Transparency
Every piece of state is visible in your repository. Labels, milestones, issues, and PRs are standard GitHub objects that any team member can inspect without installing Locus.
Existing Workflow Compatibility
Locus does not replace your workflow -- it augments it. You can still:
Manually create and edit issues
Use GitHub Projects to organize work
Set up branch protection rules
Require PR reviews before merging
Use GitHub Actions for CI/CD
No API Keys Stored Locally
Locus does not store any GitHub credentials. Authentication is handled entirely by the gh CLI, which manages tokens securely through gh auth login. AI provider keys (for Claude or Codex) are managed separately via environment variables, not by Locus.
Rate Limiting
Locus includes a built-in rate limiter that tracks GitHub API usage across all gh calls. Before each API request, it checks remaining quota and backs off when limits are approached. Rate limit state is persisted to .locus/rate-limit.json between runs.
If GitHub returns a rate limit error (HTTP 403 with rate limit headers), Locus will pause and wait for the reset window before retrying.
Last updated