Graphy
Created by Matt Hartigan, 2026.
Bolt it onto a repo and it eats the whole thing: your package and every package it imports, minted into one walkable substrate, resolved through the code's own scope, compiled into a store, with parquet beside every shard. A walk is a query, never a load. If a hop parses a file, it is not a traversal.
Install
pip install 'graphyos[estate]' # the distribution; [estate] adds duckdb for the parquet estate
Everything you type after install is graphy — the import, the CLI, the artifacts. Python 3.10+.
Use
graphy eat --repo <abs> --site-packages <abs> [--package <name>] # the bolt-on: everything below, into <repo>/.graphy
graphy smash --package <name> --site-packages <abs> --out <abs> # mint a package and its import ring
graphy init --tenant <descriptor> --root <abs> --data-home <abs> … # declare a tenant: every path absolute, nothing ambient
graphy converge --tenant <descriptor> --tenant-id <name> [--resolve] # the seam per shard pair; resolve text labels through scope
graphy build --tenant <descriptor> --tenant-id <name> # compile the store; emit the parquet when duckdb is present
graphy walk --tenant <descriptor> --tenant-id <name> --seed <id> --target <id>
graphy estate --tenant <descriptor> --tenant-id <name> --sql "<over adj, nodes and walks>"
graphy traversals --tenant <descriptor> --tenant-id <name> [--replay]
graphy descend <symbol> --tenant <descriptor> --tenant-id <name> # the callees down to the primitives, every package crossing
graphy blast <symbol> … # the dependents against the edges, own shard and ring
graphy explain <symbol> … # the record, the docs, the tests that reach it, the journal page
graphy mcp --tenant <descriptor> --tenant-id <name> # the five doors as MCP tools on stdio, for Claude Code / Cursor / any client
graphy shell install --repo <abs> # the hooks and the walk-before-edit gate, into an eaten repo — see graphy/shell/README.md
graphy check --tenant <descriptor> --tenant-id <name> # read-only audit: exit 0 healthy, 1 a verdict, 2 never ran
graphy fanout --graph-dir <shard> --out <dir> # the fan-out, with a receipt
The four pillars
json JSON is the cheapest machine currency
keys we own the join keys, in one central registry
ast AST is hierarchy, not magic — anything with rules becomes AST
lens the whole world is traversable through our lens
Two laws worth stating up front
No ambient fallback. An absent tenant refuses. The engine never defaults to a tenant, a root, or a data home. Every one of them is a declared field on the descriptor, and an absent one is an error rather than a guess. Two tenants run in one process without either being able to read the other's data.
No model ever decides an edge. Every edge is one of exactly three things: structural (built
from the syntax tree), a wormhole (the same literal is a node id in two or more graphs — free by
construction), or a label resolved through the scope that binds it (the module's own definitions
and imports, self, super). Similarity alone parks forever and never graduates; a name match
is never an edge.
Vocabulary is declared per producer
The Graph IR is the boundary — typed node, edge, provenance and evidence records. AST is one
producer among several, never the contract. Each adapter declares its own vocabulary and they
mutually refuse: validate_graph(nodes, edges, Vocabulary(...)) returns a count or raises.
License
Apache 2.0 — see LICENSE. Attribution propagates through NOTICE (Apache §4(d)).
"Graphy" and "GraphyOS" are trademarks; the license grants no trademark rights (§6).
Release files for graphyos 0.2.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| graphyos-0.2.2.tar.gz | 362.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| graphyos-0.2.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 645.5 kB
Release files / graphyos-0.2.2.tar.gz
| Download URL | graphyos-0.2.2.tar.gz |
|---|---|
| Size | 362.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c99db93cad32190dd978ff0f78592f3a86bdcaf22ba7d526f8ddeeb637ab4a1b
|
|
BLAKE2b-256 checksum How to use checksums |
3d27575780286ea9257de87baa8de39db99cf468d68e22a12b6843645a0c6e30
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 8, 2026.
Transparency logRelease files / graphyos-0.2.2-py3-none-any.whl
| Download URL | graphyos-0.2.2-py3-none-any.whl |
|---|---|
| Size | 283.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0cff64565109183eebdb9f29d7bfd1e536b5cc358d8a60f02557a7ae742f6f8f
|
|
BLAKE2b-256 checksum How to use checksums |
5a04ef6627b87ef4c47890886dfa8b18abfb506c8384c7091cb298cafe240bba
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 8, 2026.
Transparency log