gitmir-local

mcp
Guvenlik Denetimi
Basarisiz
Health Uyari
  • License — License: AGPL-3.0
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Low visibility — Only 6 GitHub stars
Code Basarisiz
  • fs.rmSync — Destructive file system operation in bin/gitmir.mjs
  • os.homedir — User home directory access in bin/gitmir.mjs
  • process.env — Environment variable access in bin/gitmir.mjs
Permissions Gecti
  • Permissions — No dangerous permissions requested

Bu listing icin henuz AI raporu yok.

SUMMARY

Open-source Object Context for software teams and AI agents. Maps real code into business objects, logic and dependencies, shows change impact, serves relevant context over MCP, and verifies outcomes. Local-first.

README.md

GitMir Local

Open-source Object Context for AI software development.

License: AGPL v3
Node
Dependencies
No account
Telemetry
MCP

Your repository holds the code. GitMir builds the model of how the product actually
works
— objects, relationships, business rules, states, journeys, ownership, evidence —
and keeps it in the repo next to the code.

                 YOUR REPOSITORY
                        │
                        ▼
          ┌───────────────────────────┐
          │      OBJECT CONTEXT       │  objects · relationships · rules
          │      .gitmir/model/       │  states · journeys · ownership
          └───────────────────────────┘  evidence · known deviations
                        │
             ┌──────────┴──────────┐
             ▼                     ▼
            YOU                YOUR AGENT
      What does this do?    The relevant slice,
      What can break?       not the whole repo
      Why is it like this?  The rules it must not break
      What changed?         What to verify when done

Build the context once. Keep it in the repo. Reuse it for every change — instead of making
the agent reconstruct your product from scratch on every task.

Local-first · no GitMir account · no GitMir telemetry · MCP included

60 seconds · Five minutes on your own repository · How the model works


One change, two readings

A ticket says "Allow a partial refund."

What the repository shows you: a refund function, an endpoint, a dialog.

What the product says that change means:

Allow a partial refund
├── refundOrder                    the function named on the ticket
├── Order                          its lifecycle has a refunded state, with effects
├── OrderRefunded                  an event two other functions handle
├── Payment                        money — marked sensitive in the model
├── captureRefund                  runs downstream, in another area
├── notifyRefund                   runs downstream
├── POST /api/orders/:id/refund
├── OrderPage · RefundDialog
└── "Refund an order"              a journey a person walks, 5 steps

Two areas. One journey. One lifecycle. Money in reach.
21 of 29 possible points — 72% of this product.

The ticket tells the agent what to change.
GitMir shows what the product says that change means.

A developer can implement the ticket exactly as written and still implement the wrong
change for the product. So can an agent, faster.

Changes, the areas they reach, and the user journeys running through those areas

How change impact is calculated — every weight, the two-hop
rule, and how to disagree with the number.


What you get

1 · Understand the product. Ask what checkout depends on, where a business rule is
implemented, why an order can enter a state — answered by walking the model rather than
reassembling it from files.

2 · Understand a change. What it reaches, in both directions. Inbound is the direction
that gets forgotten: what the function calls is already in your head, what calls it is
not.

3 · Give the agent the right context. Not more context — the relevant context. The
slice for this change, over MCP, with the rules it must not break and the deviations
already known in the code it is about to touch.

4 · Verify the outcome. The affected context becomes the verification steps. A task is
not done because code was generated; it is done when the expected product behaviour is
proven.

Understand → Execute → Verify, over one model that lives in the repository.


60 seconds

Read it first, then run it:

git clone https://github.com/gitmir-hello/gitmir-local.git
cd gitmir-local
node server.ts

Or install the gitmir command:

curl -fsSL https://ide.gitmir.com/install.sh | sh     # macOS · Linux
irm https://ide.gitmir.com/install.ps1 | iex          # Windows
gitmir

Clones into ~/.gitmir/local, links one command onto your PATH, and pulls nothing from a package registry. Read the installer — it is short on purpose. There is no npm route: npm i -g would put this under node_modules, where Node refuses to strip TypeScript types.

http://localhost:4599 → add a project folder → ▶ Run Claude → paste the
gitmir-model skill. Claude reads the repo, writes .gitmir/model/, and every view
has something in it.

Command
gitmir start it and open the browser
gitmir mcp add register the MCP server with the Claude Code CLI
gitmir status Node version, port, what is missing
gitmir update pull the latest, and restart if it was running

Want to look before pointing it at your own code? Add
examples/refund-shop — an invented shop with a model and two
planned tasks. Every number in this README is that project.


Five minutes on your own repository

Build the model, then ask your agent these five questions:

  1. What are the main business objects in this product?
  2. Pick one that matters. What depends on it — in both directions?
  3. Where is its lifecycle implemented, and what fires on each transition?
  4. If I change that behaviour, which user journeys could be affected?
  5. Which of the relationships in your answer are inferred rather than confirmed?

If any answer surprises you, GitMir has surfaced context that was living in the repository
or in somebody's head.


What GitMir keeps, instead of another chat history

.gitmir/model/       areas · business objects · functions · endpoints · screens
                     events · journeys · lifecycles · reactions · ownership
.gitmir/findings/    where the code does not do what the product says
tasks/               work, its declared scope, its risk, its approval

The important part is not the nodes. It is the relationships:

Refund ─┬─ modifies ────────→ Payment
        ├─ changes ─────────→ Order.status
        ├─ may_restore ─────→ Inventory
        ├─ requires ────────→ Permission
        ├─ contributes_to ──→ FinanceReport
        └─ follows ─────────→ RefundPolicy

Ids are stable, so a rename stays a rename instead of becoming a delete and a create. Every
view, the MCP server and the task queue read the same files — they cannot answer the same
question two different ways.

This is not "the code is the truth". The code is one input. The model is
code + confirmed rules + decisions + evidence, which is why spec-audit can record the
places where those disagree instead of quietly preferring one.

How the model is built


Use it from the agent you already have

gitmir mcp add

Then ask, in Claude Code, Cursor, or anything else that speaks
MCP:

What depends on Refund?
What breaks if I change Order.status?
Which business rules govern cancellation?
What should be verified for this task?
Where does the code already not do what the spec says?

Same model, same relationships, no separate AI knowledge base. Your editor starts it as a
subprocess over stdin/stdout — no port, no network, and the dashboard does not need to be
running.
Every reply states how fresh the model is, because there is no amber banner in
somebody else's editor.

The MCP server — thirteen tools, and what each admits about its own
behaviour.


Trust is visible

The first question after "an AI built a model of my product" is what if it got it wrong
so the answer is on screen rather than in a footnote.

An AI reads and structures the codebase. Once the relationships are written down, GitMir
walks them deterministically
— the same model gives the same answer every time, and
changing one link by hand moves the number accordingly. What you are asked to trust is the
map, not the arithmetic. And the map states its own standing:

  • Freshness — how far the code has moved since the model was built, on every answer
  • Declared or inferred — whether a task named its scope, or the numbers came from what
    it merely mentions
  • Known deviations — where the code does not do what the spec says, marked on the
    objects themselves
  • Gaps — what the model does not know about your product yet, stated as absence rather
    than left silent

The How much to trust it view exists to be read before quoting any number from any
other view.


Start with the problem you have

The skill cards, grouped by when you need them
Your situation The path
I inherited a codebase gitmir-modelmodel-navigate
The repo is too big to read in one pass model-ingest
I need to make a risky change model-navigatetask-plannertask-runner
The docs and the code may disagree spec-audit
I have to prove the app actually works app-audit
I am moving this to another stack stack-port
I am changing an old system I did not write legacy-maintenance
I have an idea and no spec product-docs-spectask-planner
I keep re-explaining the same context context-distillation
I cannot say what was done last week task-log

Twelve skills, plain markdown in skills/ — read them, change them, keep your
own. They are served as MCP prompts too, so most clients surface them as slash commands.

What each one does


Where the code disagrees with the product

Your agent reads the spec against the code and finds fifteen places they disagree. It
writes them in a reply, and they are gone when the conversation ends — the agent that edits
one of those functions next week does not know, and neither does whoever approves the
change.

spec-audit records them instead. Each names the rule, what the code does instead, what
that costs, and the objects it sits on:

  • the object is drawn as deviating on every diagram — in colour, so the mark survives
    at the zoom where labels disappear
  • the change radius warns before anyone approves work that reaches it
  • the context handed to an agent carries it, so it cannot plan against rules the code
    does not follow
  • deciding to live with one records who decided and why — the difference between a
    product with known limits and one with surprises

A finding remembers the files it was read from. When one changes, it asks to be re-checked
rather than going on asserting something about code that has moved.


The dashboard

Arranged by the question you arrived with, not by the shape of the data. Every view opens
by saying what it is, what it gives you, and how to use it.

The question What answers it
What does it do? the product map, the journeys people walk, the business objects, where data moves between areas, what raises a signal
Why does it work this way? the lifecycle of each object, and every branch with the condition it actually checks
What would a change cost? what a task reaches, how much of the product that is, whether anything sensitive is in it
Who answers for it? the owning team per area — and the areas nobody has claimed, drawn as the gap they are
How much should I trust it? where the model is solid, where it is guessing, what it does not know
What actually happened? where the code disagrees with the spec, what changed between two dates, whether finished work stayed inside its declared scope

Every diagram opens: an area holds its objects, a transition holds what it fires — so the
top level stays a size you can take in and the detail is one click inside it.

An area opened in place, showing the objects, screens and endpoints inside it An order lifecycle: states, the transitions between them, and a transition holding two effects

Alongside: Queue (todo → in progress → verify → done, each card carrying its risk and
its approval) and Preview (open any URL, click an element, get a prompt naming it and
the files it probably lives in).

They are drawn on a canvas by a renderer written for this project — which is why vendor/
holds fonts and nothing else, and why a map exported for someone to open is one self-contained
file under a megabyte.


Local, and what that does and does not mean

GitMir uploads nothing. The model, the dashboard, the MCP server and the task queue run
on your machine and are stored in your project. No GitMir account is required for local
use, and there is no GitMir telemetry — not reduced, not anonymised, none.
(SECURITY.md)

Your coding agent is a separate program with its own policy. Claude Code, Cursor or
whatever you run sends code and context to the model provider it is configured against,
under that provider's data terms. GitMir does not change that and will not pretend to. What
it changes is how much has to be sent: the relevant slice of the model, instead of the
repository, over and over.

Requirements. Node.js 22.18+ — it runs the TypeScript directly, so
node server.ts is the whole build system. The claude CLI on your PATH if you want the
dashboard to run Claude for you. macOS · Windows · Linux. dependencies is empty and
staying that way: the renderer is written for this and the fonts are vendored, so it works
offline. Port 4599, or GITMIR_PORT=4600.


Local → Connect → Team → Enterprise

GitMir Local — this repository. Free, open source, and not a trial: the model, every
view, the MCP server, twelve skills, the task queue with risk and approval, and sharing a
read-only map. One person on one machine, for as long as they like.

The paid part begins at the second person — a shared model between machines, tasks that
travel between teammates, their snapshots next to yours — and continues into adapting
GitMir to an organisation's own products, agents and rules.
ide.gitmir.com

The model never leaves your machine either way. What travels between teammates is what you
send: ids, counts, area names, decisions and who made them. The server routes messages and
stores no business logic — which is why this engine is open in the first place, and why you
can read exactly what it does.

License. Dual: AGPL-3.0 — fork it, use it for paid work, run it forever
without us; distribute a modified version as a service and your source goes AGPL too. Or a
commercial license for closed-source embedding — [email protected].


We built this for ourselves — we run Claude Code all day across dozens of projects.

Run it on a product you actually know, then tell us:
did the model understand it correctly · what did it miss · what dependency did it find that
you did not expect

Share what the model got right and wrong
There is no telemetry, so that thread is the only way we learn anything.

🌐 gitmir.com · 🚀 ide.gitmir.com · ✉️ [email protected]

© GITMIR · bundled fonts ship under their own licenses (THIRD_PARTY.md) · the GITMIR name and logo are trademarks

Yorumlar (0)

Sonuc bulunamadi