Repository navigation
Quickstart Runtime
The runtime is the IGL language and its reference implementation in Node.js. It runs on your own machine, needs no account, and is what the hosted platform's rules are modeled on. Ten minutes gets you from clone to a governed program that refuses an unauthorized action before any model work happens.
You need Node.js 20 or newer and git.
git clone https://github.com/SMEPro-Technologies-LLC/igl.git
cd igl
npm ci
npm run checkThat runs the linter, the type check and the suite: the lexer, parser and static checker, the interpreter, the identity graph, the hash chained journal, signed receipts, the governed decode bridge and the regression tests for all nine findings of the security review. All of it passes on a clean clone; that is the bar for every pull request.
node examples/run-igl-language-live.mjsA small local language model generates text inside the limits a program declares. Watch the trace: every step names the actor, the intent it ran under and the model that was pinned for it. The first run downloads the model, so give it a minute.
Then run the one that matters:
node examples/live-identity-decode.mjsTwo real runs through the decode bridge. The first is a company BOUNDARY graph (Hilcorp Energy, from programs/): the grants define the boundary, and the bridge turns them into a per-token mask so the model can only emit values the boundary covers. The second is an individual FOOTPRINT graph (programs/jordan-avery-dfir-footprint.igl): one statement drafts an incident report and commits; the next tries Action:restore-production-systems. The graph has observed that action five times, but nobody ever granted it, so the runtime refuses the statement during authorization with IGL_FOOTPRINT_DENIED and no model is called. Having seen something happen is not the same as being allowed to do it.
%igl 0.2
ID[Allco:Operator | Jurisdiction:TX-RRC, Commodity:Oil, Period:2026-Q3]
:: Intent[Generate_Compliance_Packet, Mode=Full]
=> Context[Traces=Recent(20), MaxDepth=3],
Compute[
UDM.Resolve(AgencyCode=TX-RRC, RequiredForms=[PR-202, H-10]),
AI.Infer(Task=Missing_Fields, Model=claude-sonnet-5, Temperature=0, Seed=7, MinConfidence=0.7),
IOS.Trace(Channels=[Reasoning, Tools, Code, Search, Context])
]
-> Output[Compliance_Packet, TurnTrace_ID]
OnFail[Remediate(Notify=compliance_lead), Halt];
Read it top to bottom. ID[...] is who is acting and within what boundary; a statement without both does not parse. Intent[...] is why. Context[...] says which prior traces may be consulted and how deep. Compute[...] separates deterministic work (UDM.), model inference (AI., always with a pinned model) and the trace (IOS.). Output[...] is what is produced, and OnFail[...] says what happens when a step fails. A second statement in the same file that files the report must carry IOS.Attest(Signer=..., Role=...), or it does not compile: nothing files without a human.
The full grammar, the seven design invariants and the evaluation order are in docs/SPEC.md.
node examples/run-igl-persistent.mjs seed
node examples/run-igl-persistent.mjs replayThe first run writes the journal to disk, hash chained entry by entry; the second, in a new process, replays it. Edit one byte of a stored entry and the next replay fails verification and refuses to load. The runtime also publishes a Merkle root for the journal, so one entry can be proven to an auditor without disclosing the rest. The small scripts in docs/examples/ show both checks in a few lines.
npm run provisionThe service listens on 127.0.0.1:8787 only. Open http://127.0.0.1:8787/ for IGL Studio, which turns a plain language description of a person or a company into an identity graph and shows what would be granted versus merely observed. The HTTP API is under /api and the MCP endpoint is POST /mcp.
From the command line, the same resolver:
node provision/cli.mjs "Example Energy, LLC is a Texas oil and gas operator"The resolver is deterministic. The exact same code runs in your browser in the User Center at id-me.ai, so what you see there is what the service does.

By default it answers only on your machine. To expose it you must set both PROVISION_PUBLIC=1 and PROVISION_API_KEY; without the key the service refuses to start. Callers present their own keys, see only their own tenant's graphs, and are rate limited. Keys are registered in provision/identities.mjs, which is ignored by git so real keys never land in a commit. The full variable list is in the repository README, and the security audit is required reading before you run it anywhere but localhost.
Core Concepts explains the pieces you just used. MCP Integration connects an AI assistant to either the local service or the hosted platform.
IGL, Identity Governed Logic. Code and contract under Apache 2.0; IGL and the logo are trademarks of SMEPro Technologies LLC. Platform at id-me.ai. Security reports: security@id-me.ai. This wiki describes what runs today; see Roadmap and Contributing for what is planned.
Start
Quickstart: the API
Quickstart: the Runtime
MCP Integration
Understand
Why IGL
Core Concepts
Ricorsa and IGL
Purposes and Projections
Governance Receipts and Audit
Policies, Agents and Workflows
Run
Operator Console
Deployment and Operations
Security Model
Reference
Use Cases
FAQ
Glossary
Roadmap and Contributing
Brand Assets
The founder's essay
Live
id-me.ai
API reference
Sandbox