[{"data":1,"prerenderedAt":4},["ShallowReactive",2],{"readme:graphjin":3},"\u003Ch1>GraphJin — One Governed Graph for Your AI Agents\u003C\u002Fh1>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fdosco\u002Fgraphjin\u002Fblob\u002Fmaster\u002FLICENSE\" rel=\"nofollow ugc noopener\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Fdosco\u002Fgraphjin.svg?style=for-the-badge\" alt=\"Apache 2.0\" \u002F>\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fgraphjin\" rel=\"nofollow ugc noopener\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002Fgraphjin?style=for-the-badge\" alt=\"NPM Package\" \u002F>\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fhub.docker.com\u002Fr\u002Fdosco\u002Fgraphjin\u002Ftags\" rel=\"nofollow ugc noopener\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fdocker\u002Fpulls\u002Fdosco\u002Fgraphjin?style=for-the-badge\" alt=\"Docker Pulls\" \u002F>\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fdiscord.gg\u002F6pSWCTZ\" rel=\"nofollow ugc noopener\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fdiscord\u002F628796009539043348.svg?style=for-the-badge&amp;logo=discord\" alt=\"Discord Chat\" \u002F>\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fpkg.go.dev\u002Fgithub.com\u002Fdosco\u002Fgraphjin\u002Fcore\u002Fv3\" rel=\"nofollow ugc noopener\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fgodoc-reference-5272B4.svg?style=for-the-badge&amp;logo=go\" alt=\"GoDoc\" \u002F>\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fgoreportcard.com\u002Freport\u002Fgithub.com\u002Fdosco\u002Fgraphjin\u002Fcore\u002Fv3\" rel=\"nofollow ugc noopener\">\u003Cimg src=\"https:\u002F\u002Fgoreportcard.com\u002Fbadge\u002Fgithub.com\u002Fgojp\u002Fgoreportcard?style=for-the-badge\" alt=\"GoReport\" \u002F>\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>GraphJin is a compiler and runtime that gives AI agents one governed graph over the systems a real company already has: databases, warehouses, files, source code, workflows, metadata, and security policy. Instead of handing an agent raw credentials and hoping it guesses correctly, GraphJin exposes that graph through GraphQL + MCP: the agent discovers before acting, validates queries, runs approved work, observes runtime status — and every answer is checked against an execution ledger before it leaves the server.\u003C\u002Fp>\n\u003Cp>It is not only for agents. GraphJin is still a high-performance GraphQL-to-database compiler, Go library, standalone API service, REST\u002FOpenAPI gateway, and real-time subscription server. The agent use case is where everything comes together: the same compiler that serves your apps can also give AI a smart, auditable way to work across data, code, and operations.\u003C\u002Fp>\n\u003Cp>Works with PostgreSQL, MySQL, MongoDB, SQLite, Oracle, MSSQL, Snowflake, Redshift, BigQuery, Apache Cassandra \u002F Amazon Keyspaces, S3\u002FGCS\u002Flocal files, CodeSQL source indexes - and models from Claude\u002FGPT-4 to local 7B models.\u003C\u002Fp>\n\u003Ch2>Why GraphJin For Agents\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>\u003Cstrong>A built-in agent, one call away\u003C\u002Fstrong> - POST one instruction to \u003Ccode>\u002Fapi\u002Fv1\u002Fagent\u003C\u002Fcode> (or call the \u003Ccode>ask_graphjin_agent\u003C\u002Fcode> MCP tool) and GraphJin runs the discovery loop itself - as the caller, under the caller's permissions - and returns a typed, evidence-backed answer. See \u003Ca href=\"#server-side-agent\" rel=\"nofollow ugc noopener\">Server-Side Agent\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>One governed surface for many systems\u003C\u002Fstrong> - Query operational databases, warehouses, MongoDB, object stores, local files, CodeSQL source indexes, workflows, and GraphJin system roots through GraphQL and MCP.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Smart discovery before action\u003C\u002Fstrong> - Agents start with \u003Ccode>query_catalog(search: \"&lt;user instruction&gt;\")\u003C\u002Fcode>, \u003Ccode>graphql_help\u003C\u002Fcode>, relationship evidence, examples, config recipes, and safety notes before writing or running queries.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Guarded action, not raw access\u003C\u002Fstrong> - Source-mode access, query allow-lists, read-only boundaries, policy-aware MCP tools, local encrypted secrets, and \u003Ccode>gj_config\u003C\u002Fcode> preview\u002Fapply keep changes auditable.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Operational awareness\u003C\u002Fstrong> - \u003Ccode>gj_security\u003C\u002Fcode>, \u003Ccode>gj_runtime\u003C\u002Fcode>, and the built-in console expose policy and bounded runtime status so agents can check what is safe before they act.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Standing questions, not just answers\u003C\u002Fstrong> - Hand a cursor-paginated subscription to \u003Ccode>gj_watch\u003C\u002Fcode> and GraphJin keeps answering it under the owner's permissions, resumes from persisted cursors across restarts, treats absence as a first-class event, and files what it finds in a durable inbox (\u003Ccode>gj_watch_event\u003C\u002Fcode>), a webhook, or a workflow. Evaluation runs on database polls, not model calls - a model writes the watch once, and nothing calls one again unless you turn on optional per-watch triage. See \u003Ca href=\"#watches-and-standing-questions\" rel=\"nofollow ugc noopener\">Watches\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Durable memory\u003C\u002Fstrong> - Saved queries, fragments, and workflows live in the owner-scoped \u003Ccode>gj_artifacts\u003C\u002Fcode> store. Normal watches are durable by default; explicit ephemeral watches use TTL leases.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2>Installation\u003C\u002Fh2>\n\u003Cp>\u003Cstrong>npm (all platforms)\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-bash\">npm install -g graphjin\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>macOS (Homebrew)\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-bash\">brew \n\u003C\u002Fcode>\u003C\u002Fpre>\n",1793926092683]