<!-- CANARY: REQ=REQ-CLI-SUBPROCESS-ELIMINATION-001; FEATURE="CLI Subprocess Elimination"; ASPECT=UnifiedBinary; STATUS=TESTED; OWNER=cli; UPDATED=2026-01-15 --> <h2 id="api-reference-and-cli-manual" class="position-relative d-flex align-items-center group"> <span>API Reference and CLI Manual</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="api-reference-and-cli-manual" aria-haspopup="dialog" aria-label="Share link: API Reference and CLI Manual"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h2><div id="headingShareModal" class="heading-share-modal" role="dialog" aria-modal="true" aria-labelledby="headingShareTitle" hidden> <div class="hsm-dialog" role="document"> <div class="hsm-header"> <h2 id="headingShareTitle" class="h6 mb-0 fw-bold">Share this section</h2> <button type="button" class="hsm-close" aria-label="Close"> <i class="fa-solid fa-xmark"></i> </button> </div> <div class="hsm-body"> <label for="headingShareInput" class="form-label small text-muted mb-1 text-uppercase fw-bold" style="font-size: 0.7rem; letter-spacing: 0.5px;">Permalink</label> <div class="input-group mb-4 hsm-url-group"> <input id="headingShareInput" type="text" class="form-control font-monospace" readonly aria-readonly="true" style="font-size: 0.85rem;" /> <button class="btn btn-primary hsm-copy" type="button" aria-label="Copy" title="Copy"> <i class="fa-duotone fa-clipboard" aria-hidden="true"></i> </button> </div> <div class="small fw-bold mb-2 text-muted text-uppercase" style="font-size: 0.7rem; letter-spacing: 0.5px;">Share via</div> <div class="hsm-share-grid"> <a id="share-twitter" class="btn btn-outline-secondary w-100" target="_blank" rel="noopener noreferrer"> <i class="fa-brands fa-twitter me-2"></i>Twitter </a> <a id="share-linkedin" class="btn btn-outline-secondary w-100" target="_blank" rel="noopener noreferrer"> <i class="fa-brands fa-linkedin me-2"></i>LinkedIn </a> <a id="share-facebook" class="btn btn-outline-secondary w-100" target="_blank" rel="noopener noreferrer"> <i class="fa-brands fa-facebook me-2"></i>Facebook </a> </div> </div> </div> </div> <style> .heading-share-modal { position: fixed; inset: 0; display: flex; justify-content: center; align-items: center; background: rgba(0, 0, 0, 0.6); z-index: 1050; padding: 1rem; backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); } .heading-share-modal[hidden] { display: none !important; } .hsm-dialog { max-width: 420px; width: 100%; background: var(--bs-body-bg, #fff); color: var(--bs-body-color, #212529); border: 1px solid var(--bs-border-color, rgba(0,0,0,0.1)); border-radius: 1rem; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25); overflow: hidden; animation: hsm-fade-in 0.2s ease-out; } @keyframes hsm-fade-in { from { opacity: 0; transform: scale(0.95); } to { opacity: 1; transform: scale(1); } } [data-bs-theme="dark"] .hsm-dialog { background: #1e293b; border-color: rgba(255,255,255,0.1); color: #f8f9fa; } .hsm-header { display: flex; justify-content: space-between; align-items: center; padding: 1rem 1.5rem; border-bottom: 1px solid var(--bs-border-color, rgba(0,0,0,0.1)); background: rgba(0,0,0,0.02); } [data-bs-theme="dark"] .hsm-header { background: rgba(255,255,255,0.02); border-color: rgba(255,255,255,0.1); } .hsm-close { background: transparent; border: none; color: inherit; opacity: 0.5; padding: 0.25rem 0.5rem; border-radius: 0.25rem; font-size: 1.2rem; line-height: 1; transition: opacity 0.2s; } .hsm-close:hover { opacity: 1; } .hsm-body { padding: 1.5rem; } .hsm-url-group { display: flex !important; align-items: stretch; } .hsm-url-group .form-control { flex: 1; min-width: 0; margin: 0; background: var(--bs-secondary-bg, #f8f9fa); border-color: var(--bs-border-color, #dee2e6); border-top-right-radius: 0; border-bottom-right-radius: 0; height: 42px; } .hsm-url-group .btn { flex: 0 0 auto; margin: 0; margin-left: -1px; border-top-left-radius: 0; border-bottom-left-radius: 0; height: 42px; display: flex; align-items: center; justify-content: center; padding: 0 1.25rem; z-index: 2; } [data-bs-theme="dark"] .hsm-url-group .form-control { background: #0f172a; border-color: #334155; color: #e2e8f0; } .hsm-share-grid { display: flex; flex-direction: column; gap: 0.5rem; } .hsm-share-grid .btn { display: flex; align-items: center; justify-content: center; font-size: 0.9rem; padding: 0.6rem; border-color: var(--bs-border-color); width: 100%; } [data-bs-theme="dark"] .hsm-share-grid .btn { color: #e2e8f0; border-color: #475569; } [data-bs-theme="dark"] .hsm-share-grid .btn:hover { background: #334155; border-color: #cbd5e1; } </style> <script> (function(){ const modal = document.getElementById('headingShareModal'); if(!modal) return; const input = modal.querySelector('#headingShareInput'); const copyBtn = modal.querySelector('.hsm-copy'); const twitter = modal.querySelector('#share-twitter'); const linkedin = modal.querySelector('#share-linkedin'); const facebook = modal.querySelector('#share-facebook'); const closeBtn = modal.querySelector('.hsm-close'); let lastFocus=null; let trapBound=false; function buildUrl(id){ return window.location.origin + window.location.pathname + '#' + id; } function isOpen(){ return !modal.hasAttribute('hidden'); } function hydrate(id){ const url=buildUrl(id); input.value=url; const enc=encodeURIComponent(url); const text=encodeURIComponent(document.title); if(twitter) twitter.href=`https://twitter.com/intent/tweet?url=${enc}&text=${text}`; if(linkedin) linkedin.href=`https://www.linkedin.com/sharing/share-offsite/?url=${enc}`; if(facebook) facebook.href=`https://www.facebook.com/sharer/sharer.php?u=${enc}`; } function openModal(id){ lastFocus=document.activeElement; hydrate(id); if(!isOpen()){ modal.removeAttribute('hidden'); } requestAnimationFrame(()=>{ input.focus(); }); trapFocus(); } function closeModal(){ if(!isOpen()) return; modal.setAttribute('hidden',''); if(lastFocus && typeof lastFocus.focus==='function') lastFocus.focus(); } function copyCurrent(){ try{ navigator.clipboard.writeText(input.value).then(()=>feedback(true),()=>fallback()); } catch(e){ fallback(); } } function fallback(){ input.select(); try{ document.execCommand('copy'); feedback(true);}catch(e){ feedback(false);} } function feedback(ok){ if(!copyBtn) return; const icon=copyBtn.querySelector('i'); if(!icon) return; const prev=copyBtn.getAttribute('data-prev')||icon.className; if(!copyBtn.getAttribute('data-prev')) copyBtn.setAttribute('data-prev',prev); icon.className= ok ? 'fa-duotone fa-clipboard-check':'fa-duotone fa-circle-exclamation'; setTimeout(()=>{ icon.className=prev; },1800); } function handleShareClick(e){ e.preventDefault(); const btn=e.currentTarget; const id=btn.getAttribute('data-share-target'); if(id) openModal(id); } function bindShareButtons(){ document.querySelectorAll('.h-share').forEach(btn=>{ if(!btn.dataset.hShareBound){ btn.addEventListener('click', handleShareClick); btn.dataset.hShareBound='1'; } }); } bindShareButtons(); if(document.readyState==='loading'){ document.addEventListener('DOMContentLoaded', bindShareButtons); } else { requestAnimationFrame(bindShareButtons); } document.addEventListener('click', function(e){ const shareBtn=e.target.closest && e.target.closest('.h-share'); if(shareBtn && !shareBtn.dataset.hShareBound){ handleShareClick.call(shareBtn, e); } }, true); document.addEventListener('click', e=>{ if(e.target===modal) closeModal(); if(e.target.closest && e.target.closest('.hsm-close')){ e.preventDefault(); closeModal(); } if(copyBtn && (e.target===copyBtn || (e.target.closest && e.target.closest('.hsm-copy')))) { e.preventDefault(); copyCurrent(); } }); document.addEventListener('keydown', e=>{ if(e.key==='Escape' && isOpen()) closeModal(); }); function trapFocus(){ if(trapBound) return; trapBound=true; modal.addEventListener('keydown', f=>{ if(f.key==='Tab' && isOpen()){ const focusable=[...modal.querySelectorAll('a[href],button,input,textarea,select,[tabindex]:not([tabindex="-1"])')].filter(el=>!el.hasAttribute('disabled')); if(!focusable.length) return; const first=focusable[0]; const last=focusable[focusable.length-1]; if(f.shiftKey && document.activeElement===first){ f.preventDefault(); last.focus(); } else if(!f.shiftKey && document.activeElement===last){ f.preventDefault(); first.focus(); } } }); } if(closeBtn) closeBtn.addEventListener('click', e=>{ e.preventDefault(); closeModal(); }); })(); </script><p>Complete reference for Geode CLI commands and GQL language surface.</p> <h3 id="cli-overview" class="position-relative d-flex align-items-center group"> <span>CLI Overview</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="cli-overview" aria-haspopup="dialog" aria-label="Share link: CLI Overview"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3><p>Geode ships a unified <code>geode</code> binary. Compatibility symlinks (<code>geoded</code>, <code>geodec</code>) are provided for legacy workflows.</p> <table> <thead> <tr> <th>Command</th> <th>Purpose</th> <th>Usage</th> </tr> </thead> <tbody> <tr> <td><code>geode serve</code></td> <td>Server daemon</td> <td><code>geode serve --listen 0.0.0.0:3141</code></td> </tr> <tr> <td><code>geode query</code></td> <td>One-shot query execution</td> <td><code>geode query --dsn quic://localhost:3141/social &quot;RETURN 1 AS x&quot;</code></td> </tr> <tr> <td><code>geode shell</code> / <code>gql</code></td> <td>Interactive REPL</td> <td><code>geode shell --server 127.0.0.1:3141</code></td> </tr> <tr> <td><code>geode auth</code></td> <td>Login, session, and offline auth integrity workflows</td> <td><code>geode auth login -U geode --save-session</code></td> </tr> <tr> <td><code>geode user</code> / <code>role</code> / <code>policy</code></td> <td>Local auth-store admin commands</td> <td><code>geode user create alice [email protected] --password 'secret'</code></td> </tr> <tr> <td><code>geode grant</code> / <code>revoke</code></td> <td>Permission changes</td> <td><code>geode grant read:users --to alice</code></td> </tr> <tr> <td><code>geode apikey</code></td> <td>API key management</td> <td><code>geode apikey create --user alice --name prod-app --scope query:execute</code></td> </tr> <tr> <td><code>geode backup</code> / <code>restore</code> / <code>migrate</code></td> <td>Data operations</td> <td><code>geode backup --output /backups/geode.tar.gz</code></td> </tr> <tr> <td><code>geode lsp</code> / <code>mcp</code></td> <td>Tooling integrations</td> <td><code>geode mcp</code></td> </tr> </tbody> </table> <blockquote> <p><strong>Current limitation (main, 2026-03-30)</strong></p> <p><code>geode user</code>, <code>role</code>, <code>policy</code>, <code>grant</code>, <code>revoke</code>, <code>apikey</code>, and CLI MFA flows still operate on the <strong>local auth store</strong> instead of delegating to a running server. Use them for on-host/offline administration until <code>GAP-0270</code> is closed.</p> </blockquote> <h3 id="server-commands-geode-serve" class="position-relative d-flex align-items-center group"> <span>Server Commands (&lt;code&gt;geode serve&lt;/code&gt;)</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="server-commands-geode-serve" aria-haspopup="dialog" aria-label="Share link: Server Commands (geode serve)"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="start-server" class="position-relative d-flex align-items-center group"> <span>Start Server</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="start-server" aria-haspopup="dialog" aria-label="Share link: Start Server"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Default (0.0.0.0:3141)</span> </span></span><span class="line"><span class="cl">geode serve </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Custom listen address</span> </span></span><span class="line"><span class="cl">geode serve --listen 0.0.0.0:3141 </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># With configuration file</span> </span></span><span class="line"><span class="cl">geode serve --config /etc/geode/geode.yaml </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># With TLS certificates</span> </span></span><span class="line"><span class="cl">geode serve <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --cert /etc/geode/certs/server-cert.pem <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --key /etc/geode/certs/server-key.pem </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># With data directory</span> </span></span><span class="line"><span class="cl">geode serve --data-dir /var/lib/geode </span></span></code></pre></div> <h4 id="server-flags" class="position-relative d-flex align-items-center group"> <span>Server Flags</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="server-flags" aria-haspopup="dialog" aria-label="Share link: Server Flags"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><table> <thead> <tr> <th>Flag</th> <th>Description</th> <th>Default</th> </tr> </thead> <tbody> <tr> <td><code>--data-dir &lt;path&gt;</code></td> <td>Data directory</td> <td><code>./data</code></td> </tr> <tr> <td><code>--listen &lt;addr:port&gt;</code></td> <td>Listen address</td> <td><code>0.0.0.0:3141</code></td> </tr> <tr> <td><code>--cert &lt;path&gt;</code></td> <td>TLS certificate path</td> <td>auto-generated if missing</td> </tr> <tr> <td><code>--key &lt;path&gt;</code></td> <td>TLS private key path</td> <td>auto-generated if missing</td> </tr> <tr> <td><code>--log-level &lt;level&gt;</code></td> <td><code>debug|info|warn|error</code></td> <td><code>info</code></td> </tr> <tr> <td><code>--idle-timeout &lt;ms&gt;</code></td> <td>QUIC idle timeout</td> <td><code>300000</code></td> </tr> <tr> <td><code>--persist-interval &lt;ms&gt;</code></td> <td>Background persistence interval</td> <td><code>100</code></td> </tr> <tr> <td><code>--help</code></td> <td>Show help</td> <td>-</td> </tr> </tbody> </table> <h3 id="client-commands-geode-query" class="position-relative d-flex align-items-center group"> <span>Client Commands (&lt;code&gt;geode query&lt;/code&gt;)</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="client-commands-geode-query" aria-haspopup="dialog" aria-label="Share link: Client Commands (geode query)"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="execute-query" class="position-relative d-flex align-items-center group"> <span>Execute Query</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="execute-query" aria-haspopup="dialog" aria-label="Share link: Execute Query"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Single query</span> </span></span><span class="line"><span class="cl">geode query <span class="s2">&#34;RETURN 1 AS x&#34;</span> --server 127.0.0.1:3141 </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Query from file</span> </span></span><span class="line"><span class="cl">geode query -f query.gql --server 127.0.0.1:3141 </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Query from stdin</span> </span></span><span class="line"><span class="cl"><span class="nb">echo</span> <span class="s2">&#34;RETURN 1 AS x&#34;</span> <span class="p">|</span> geode query - </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># With output format</span> </span></span><span class="line"><span class="cl">geode query --format json <span class="s2">&#34;MATCH (n) RETURN n LIMIT 10&#34;</span> --server 127.0.0.1:3141 </span></span><span class="line"><span class="cl">geode query --format table <span class="s2">&#34;MATCH (n) RETURN n LIMIT 10&#34;</span> --server 127.0.0.1:3141 </span></span><span class="line"><span class="cl">geode query --format csv <span class="s2">&#34;MATCH (n) RETURN n LIMIT 10&#34;</span> --server 127.0.0.1:3141 </span></span><span class="line"><span class="cl">geode query --format dot <span class="s2">&#34;MATCH (a)-[r]-&gt;(b) RETURN a, r, b&#34;</span> <span class="p">|</span> dot -Tpng -o graph.png </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Show execution time</span> </span></span><span class="line"><span class="cl">geode query --timeout <span class="m">5</span> --retry <span class="m">3</span> <span class="s2">&#34;MATCH (p:Person) RETURN p.name&#34;</span> --server 127.0.0.1:3141 </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Connect with a DSN and bind to a graph</span> </span></span><span class="line"><span class="cl">geode query --dsn quic://geode:[email protected]:3141/social <span class="s2">&#34;MATCH (n) RETURN count(n)&#34;</span> </span></span></code></pre></div> <h4 id="client-flags" class="position-relative d-flex align-items-center group"> <span>Client Flags</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="client-flags" aria-haspopup="dialog" aria-label="Share link: Client Flags"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><table> <thead> <tr> <th>Flag</th> <th>Description</th> <th>Default</th> </tr> </thead> <tbody> <tr> <td><code>--dsn &lt;dsn&gt;</code></td> <td>Connection DSN</td> <td>-</td> </tr> <tr> <td><code>-f, --file &lt;path&gt;</code></td> <td>Read query from file</td> <td>-</td> </tr> <tr> <td><code>-g, --graph &lt;name&gt;</code></td> <td>Graph name (prepends <code>USE GRAPH</code>)</td> <td>-</td> </tr> <tr> <td><code>--format &lt;fmt&gt;</code></td> <td>Output format (<code>json|table|csv|dot</code>)</td> <td><code>json</code></td> </tr> <tr> <td><code>--page-size &lt;n&gt;</code></td> <td>Results page size</td> <td><code>1000</code></td> </tr> <tr> <td><code>--timeout &lt;seconds&gt;</code></td> <td>Connection timeout in seconds</td> <td><code>30</code></td> </tr> <tr> <td><code>--retry &lt;count&gt;</code></td> <td>Retry attempts on failure</td> <td><code>0</code></td> </tr> <tr> <td><code>--server &lt;addr:port&gt;</code></td> <td>Server address</td> <td><code>127.0.0.1:3141</code></td> </tr> <tr> <td><code>--grpc</code></td> <td>Use gRPC instead of QUIC</td> <td><code>false</code></td> </tr> <tr> <td><code>--insecure-tls-skip-verify</code></td> <td>Skip TLS verification</td> <td><code>false</code></td> </tr> <tr> <td><code>--ca-cert &lt;path&gt;</code></td> <td>CA certificate for server verification</td> <td>-</td> </tr> <tr> <td><code>--client-cert &lt;path&gt;</code></td> <td>Client certificate for mTLS</td> <td>-</td> </tr> <tr> <td><code>--client-key &lt;path&gt;</code></td> <td>Client private key for mTLS</td> <td>-</td> </tr> <tr> <td><code>-U, --user &lt;username&gt;</code></td> <td>Authenticate as user</td> <td>-</td> </tr> <tr> <td><code>-P, --password [pass]</code></td> <td>Password (prompts if omitted)</td> <td>-</td> </tr> <tr> <td><code>--no-saved-session</code></td> <td>Do not auto-load saved credentials</td> <td><code>false</code></td> </tr> <tr> <td><code>--help</code></td> <td>Show help</td> <td>-</td> </tr> </tbody> </table> <h4 id="dsn-notes" class="position-relative d-flex align-items-center group"> <span>DSN Notes</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="dsn-notes" aria-haspopup="dialog" aria-label="Share link: DSN Notes"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><ul> <li><code>quic://</code> is still the default and recommended transport</li> <li><code>grpc://</code> uses port <code>50051</code> by default</li> <li>DSNs can now bind a session to a graph at connect time: <code>quic://host:3141/graph</code></li> <li>Graph-bound sessions reject <code>USE GRAPH</code> for the lifetime of that connection</li> <li>DSN credentials override <code>-U</code> / <code>-P</code></li> </ul> <h3 id="interactive-shell-geode-shell" class="position-relative d-flex align-items-center group"> <span>Interactive Shell (&lt;code&gt;geode shell&lt;/code&gt;)</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="interactive-shell-geode-shell" aria-haspopup="dialog" aria-label="Share link: Interactive Shell (geode shell)"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="start-repl" class="position-relative d-flex align-items-center group"> <span>Start REPL</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="start-repl" aria-haspopup="dialog" aria-label="Share link: Start REPL"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Start shell</span> </span></span><span class="line"><span class="cl">geode shell </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Or alternative entrypoint</span> </span></span><span class="line"><span class="cl">gql </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Start shell with DSN graph binding</span> </span></span><span class="line"><span class="cl">geode shell --dsn quic://geode:secret@localhost:3141/social </span></span></code></pre></div> <h4 id="meta-commands" class="position-relative d-flex align-items-center group"> <span>Meta Commands</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="meta-commands" aria-haspopup="dialog" aria-label="Share link: Meta Commands"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>From <code>REPL_USAGE.md</code>:</p> <table> <thead> <tr> <th>Command</th> <th>Description</th> <th>Example</th> </tr> </thead> <tbody> <tr> <td><code>\connect &lt;uri&gt;</code></td> <td>Connect to server</td> <td><code>\connect quic://localhost:3141</code></td> </tr> <tr> <td><code>\begin</code></td> <td>Start transaction</td> <td><code>\begin</code></td> </tr> <tr> <td><code>\commit</code></td> <td>Commit transaction</td> <td><code>\commit</code></td> </tr> <tr> <td><code>\rollback</code></td> <td>Rollback transaction</td> <td><code>\rollback</code></td> </tr> <tr> <td><code>\format &lt;fmt&gt;</code></td> <td>Set output format</td> <td><code>\format json</code></td> </tr> <tr> <td><code>\timing on|off</code></td> <td>Toggle execution timing</td> <td><code>\timing on</code></td> </tr> <tr> <td><code>\help</code></td> <td>Show help</td> <td><code>\help</code></td> </tr> <tr> <td><code>\quit</code></td> <td>Exit shell</td> <td><code>\quit</code></td> </tr> </tbody> </table> <h4 id="shell-example-session" class="position-relative d-flex align-items-center group"> <span>Shell Example Session</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="shell-example-session" aria-haspopup="dialog" aria-label="Share link: Shell Example Session"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">Connect</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">\</span><span class="py">connect</span><span class="w"> </span><span class="py">quic</span><span class="p">:</span><span class="err">//</span><span class="nc">localhost</span><span class="p">:</span><span class="nc">3141</span><span class="err">/</span><span class="py">social</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Set</span><span class="w"> </span><span class="py">format</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">\</span><span class="py">format</span><span class="w"> </span><span class="py">json</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Run</span><span class="w"> </span><span class="kd">query</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nc">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w"> </span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">name</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Start</span><span class="w"> </span><span class="py">transaction</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">\</span><span class="py">begin</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CREATE</span><span class="w"> </span><span class="p">(:</span><span class="nc">Person</span><span class="w"> </span><span class="p">{</span><span class="py">name</span><span class="p">:</span><span class="w"> </span><span class="s">&#34;Alice&#34;</span><span class="p">,</span><span class="w"> </span><span class="nc">age</span><span class="p">:</span><span class="w"> </span><span class="nc">30</span><span class="p">})</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Commit</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">\</span><span class="py">commit</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Exit</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">\</span><span class="py">quit</span><span class="w"> </span></span></span></code></pre></div> <h3 id="authentication-commands-geode-auth" class="position-relative d-flex align-items-center group"> <span>Authentication Commands (&lt;code&gt;geode auth&lt;/code&gt;)</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="authentication-commands-geode-auth" aria-haspopup="dialog" aria-label="Share link: Authentication Commands (geode auth)"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Login and save a reusable session</span> </span></span><span class="line"><span class="cl">geode auth login -U geode --save-session </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># View or clear saved credentials</span> </span></span><span class="line"><span class="cl">geode auth token </span></span><span class="line"><span class="cl">geode auth <span class="nb">logout</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Offline auth-store integrity operations</span> </span></span><span class="line"><span class="cl">geode auth init --data-dir /var/lib/geode </span></span><span class="line"><span class="cl">geode auth reseal --data-dir /var/lib/geode </span></span><span class="line"><span class="cl">geode auth verify --data-dir /var/lib/geode </span></span></code></pre></div> <h4 id="geode-auth-command-set" class="position-relative d-flex align-items-center group"> <span>&lt;code&gt;geode auth&lt;/code&gt; Command Set</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="geode-auth-command-set" aria-haspopup="dialog" aria-label="Share link: geode auth Command Set"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><table> <thead> <tr> <th>Command</th> <th>Purpose</th> </tr> </thead> <tbody> <tr> <td><code>login</code></td> <td>Authenticate and optionally save session credentials</td> </tr> <tr> <td><code>logout</code></td> <td>Clear saved credentials</td> </tr> <tr> <td><code>token</code></td> <td>Print saved credentials JSON</td> </tr> <tr> <td><code>init</code></td> <td>Bootstrap admin user into the local auth graph (offline)</td> </tr> <tr> <td><code>reseal</code></td> <td>Recompute HMAC chain for the local auth graph (offline)</td> </tr> <tr> <td><code>verify</code></td> <td>Check HMAC chain integrity for the local auth graph (offline)</td> </tr> </tbody> </table> <h3 id="admin-and-ops-commands" class="position-relative d-flex align-items-center group"> <span>Admin and Ops Commands</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="admin-and-ops-commands" aria-haspopup="dialog" aria-label="Share link: Admin and Ops Commands"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="backup" class="position-relative d-flex align-items-center group"> <span>Backup</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="backup" aria-haspopup="dialog" aria-label="Share link: Backup"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Local backup</span> </span></span><span class="line"><span class="cl">geode backup --output /backups/geode-<span class="k">$(</span>date +%Y%m%d<span class="k">)</span>.tar.gz </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># S3 backup</span> </span></span><span class="line"><span class="cl">geode backup --dest s3://my-bucket/backups/geode-<span class="k">$(</span>date +%Y%m%d<span class="k">)</span>.tar.gz </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># With credentials</span> </span></span><span class="line"><span class="cl"><span class="nv">AWS_ACCESS_KEY_ID</span><span class="o">=</span>... <span class="nv">AWS_SECRET_ACCESS_KEY</span><span class="o">=</span>... <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span>geode backup --dest s3://my-bucket/backups/backup.tar.gz </span></span></code></pre></div> <h4 id="restore" class="position-relative d-flex align-items-center group"> <span>Restore</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="restore" aria-haspopup="dialog" aria-label="Share link: Restore"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Restore from local</span> </span></span><span class="line"><span class="cl">geode restore <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --input /backups/geode-20240115.tar.gz <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --data-dir /var/lib/geode </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Restore from S3</span> </span></span><span class="line"><span class="cl">geode restore <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --source s3://my-bucket/backups/geode-20240115.tar.gz <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --data-dir /var/lib/geode </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Point-in-time recovery</span> </span></span><span class="line"><span class="cl">geode restore <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --source s3://my-bucket/backups/geode-20240115.tar.gz <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --wal-dir /var/lib/geode/wal <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --until <span class="s2">&#34;2024-01-15T14:30:00Z&#34;</span> </span></span></code></pre></div> <h3 id="gql-language-reference" class="position-relative d-flex align-items-center group"> <span>GQL Language Reference</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="gql-language-reference" aria-haspopup="dialog" aria-label="Share link: GQL Language Reference"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="keywords" class="position-relative d-flex align-items-center group"> <span>Keywords</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="keywords" aria-haspopup="dialog" aria-label="Share link: Keywords"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>From <code>API_REFERENCE_GENERATED.md</code>, key GQL keywords:</p> <p><strong>Query Keywords</strong>:</p> <ul> <li><code>MATCH</code> - Pattern matching</li> <li><code>WHERE</code> - Filter predicates</li> <li><code>RETURN</code> - Projection</li> <li><code>WITH</code> - Pipeline chaining</li> <li><code>ORDER BY</code> - Sorting</li> <li><code>LIMIT</code> - Limit results</li> <li><code>OFFSET</code> - Skip results</li> <li><code>DISTINCT</code> - Remove duplicates</li> </ul> <p><strong>Write Keywords</strong>:</p> <ul> <li><code>CREATE</code> - Create nodes/relationships</li> <li><code>DELETE</code> - Delete nodes/relationships</li> <li><code>DETACH DELETE</code> - Delete node and relationships</li> <li><code>SET</code> - Update properties</li> <li><code>MERGE</code> - Upsert pattern</li> <li><code>ON CREATE</code> - Merge onCreate clause</li> <li><code>ON MATCH</code> - Merge onMatch clause</li> </ul> <p><strong>Transaction Keywords</strong>:</p> <ul> <li><code>START TRANSACTION</code> - Begin transaction</li> <li><code>COMMIT</code> - Commit changes</li> <li><code>ROLLBACK</code> - Rollback changes</li> <li><code>SAVEPOINT</code> - Create savepoint (extension)</li> <li><code>ROLLBACK TO SAVEPOINT</code> - Partial rollback (extension)</li> </ul> <p><strong>Set Operations</strong>:</p> <ul> <li><code>UNION</code> - Combine results (remove duplicates)</li> <li><code>UNION ALL</code> - Combine results (keep duplicates)</li> <li><code>INTERSECT</code> - Common results</li> <li><code>EXCEPT</code> - Set difference</li> </ul> <p><strong>Graph Operations</strong>:</p> <ul> <li><code>CREATE GRAPH</code> - Create graph</li> <li><code>USE</code> - Select graph</li> <li><code>DROP GRAPH</code> - Delete graph</li> </ul> <h4 id="built-in-functions" class="position-relative d-flex align-items-center group"> <span>Built-in Functions</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="built-in-functions" aria-haspopup="dialog" aria-label="Share link: Built-in Functions"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4> <h5 id="aggregation-functions" class="position-relative d-flex align-items-center group"> <span>Aggregation Functions</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="aggregation-functions" aria-haspopup="dialog" aria-label="Share link: Aggregation Functions"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h5><table> <thead> <tr> <th>Function</th> <th>Description</th> <th>Example</th> </tr> </thead> <tbody> <tr> <td><code>COUNT()</code></td> <td>Count rows</td> <td><code>RETURN COUNT(p)</code></td> </tr> <tr> <td><code>SUM()</code></td> <td>Sum values</td> <td><code>RETURN SUM(p.age)</code></td> </tr> <tr> <td><code>AVG()</code></td> <td>Average values</td> <td><code>RETURN AVG(p.age)</code></td> </tr> <tr> <td><code>MIN()</code></td> <td>Minimum value</td> <td><code>RETURN MIN(p.age)</code></td> </tr> <tr> <td><code>MAX()</code></td> <td>Maximum value</td> <td><code>RETURN MAX(p.age)</code></td> </tr> </tbody> </table> <h5 id="string-functions" class="position-relative d-flex align-items-center group"> <span>String Functions</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="string-functions" aria-haspopup="dialog" aria-label="Share link: String Functions"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h5><table> <thead> <tr> <th>Function</th> <th>Description</th> <th>Example</th> </tr> </thead> <tbody> <tr> <td><code>upper()</code></td> <td>Uppercase</td> <td><code>RETURN upper(&quot;hello&quot;)</code> → <code>&quot;HELLO&quot;</code></td> </tr> <tr> <td><code>lower()</code></td> <td>Lowercase</td> <td><code>RETURN lower(&quot;HELLO&quot;)</code> → <code>&quot;hello&quot;</code></td> </tr> <tr> <td><code>substring()</code></td> <td>Extract substring</td> <td><code>RETURN substring(&quot;hello&quot;, 0, 3)</code> → <code>&quot;hel&quot;</code></td> </tr> <tr> <td><code>length()</code></td> <td>String length</td> <td><code>RETURN length(&quot;hello&quot;)</code> → <code>5</code></td> </tr> </tbody> </table> <h5 id="temporal-functions" class="position-relative d-flex align-items-center group"> <span>Temporal Functions</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="temporal-functions" aria-haspopup="dialog" aria-label="Share link: Temporal Functions"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h5><table> <thead> <tr> <th>Function</th> <th>Description</th> <th>Example</th> </tr> </thead> <tbody> <tr> <td><code>timestamp()</code></td> <td>Current timestamp</td> <td><code>RETURN timestamp()</code></td> </tr> <tr> <td><code>date()</code></td> <td>Create date</td> <td><code>RETURN date('2024-01-15')</code></td> </tr> <tr> <td><code>time()</code></td> <td>Create time</td> <td><code>RETURN time('14:30:00')</code></td> </tr> </tbody> </table> <h5 id="type-conversion" class="position-relative d-flex align-items-center group"> <span>Type Conversion</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="type-conversion" aria-haspopup="dialog" aria-label="Share link: Type Conversion"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h5><table> <thead> <tr> <th>Function</th> <th>Description</th> <th>Example</th> </tr> </thead> <tbody> <tr> <td><code>toInteger()</code></td> <td>Convert to integer</td> <td><code>RETURN toInteger(&quot;42&quot;)</code> → <code>42</code></td> </tr> <tr> <td><code>toFloat()</code></td> <td>Convert to float</td> <td><code>RETURN toFloat(&quot;3.14&quot;)</code> → <code>3.14</code></td> </tr> <tr> <td><code>toString()</code></td> <td>Convert to string</td> <td><code>RETURN toString(42)</code> → <code>&quot;42&quot;</code></td> </tr> <tr> <td><code>toBoolean()</code></td> <td>Convert to boolean</td> <td><code>RETURN toBoolean(&quot;true&quot;)</code> → <code>true</code></td> </tr> </tbody> </table> <h5 id="vector-functions" class="position-relative d-flex align-items-center group"> <span>Vector Functions</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="vector-functions" aria-haspopup="dialog" aria-label="Share link: Vector Functions"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h5><table> <thead> <tr> <th>Function</th> <th>Description</th> <th>Example</th> </tr> </thead> <tbody> <tr> <td><code>vector_distance_l2()</code></td> <td>Euclidean distance</td> <td><code>RETURN vector_distance_l2($a, $b)</code></td> </tr> <tr> <td><code>vector_distance_cosine()</code></td> <td>Cosine distance</td> <td><code>RETURN vector_distance_cosine($a, $b)</code></td> </tr> <tr> <td><code>vector_distance_dot()</code></td> <td>Dot product</td> <td><code>RETURN vector_distance_dot($a, $b)</code></td> </tr> </tbody> </table> <h4 id="data-types" class="position-relative d-flex align-items-center group"> <span>Data Types</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="data-types" aria-haspopup="dialog" aria-label="Share link: Data Types"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>From <code>TYPES_AND_FUNCTIONS.md</code>:</p> <p><strong>Core Types</strong>:</p> <ul> <li><code>Null</code> - Null value</li> <li><code>Boolean</code> - true/false</li> <li><code>Integer</code> - Signed integer (Int8/16/32/64)</li> <li><code>Float</code> - Floating point (Float32/64)</li> <li><code>String</code> - UTF-8 text</li> <li><code>Decimal</code> - Arbitrary precision decimal</li> </ul> <p><strong>Advanced Types</strong>:</p> <ul> <li><code>Date</code> - Calendar date</li> <li><code>Time</code> - Time of day</li> <li><code>Timestamp</code> - Date + time with timezone</li> <li><code>Interval</code> - Duration</li> <li><code>JSON</code> / <code>JSONB</code> - JSON data</li> <li><code>Bytea</code> - Binary data</li> <li><code>VectorF32</code> / <code>VectorI32</code> - Vector embeddings</li> <li><code>LatLon</code> / <code>GeoPoint</code> - Geographic coordinates</li> <li><code>IpAddr</code> / <code>Subnet</code> / <code>MacAddr</code> - Network addresses</li> <li><code>UUID</code> - Universally unique identifier</li> <li><code>Hash</code> - Cryptographic hash</li> </ul> <p>See <a href="/docs/model/data-model-and-types" >Data Model and Types</a> for details.</p> <h4 id="procedures" class="position-relative d-flex align-items-center group"> <span>Procedures</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="procedures" aria-haspopup="dialog" aria-label="Share link: Procedures"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>From <code>API_REFERENCE_GENERATED.md</code>:</p> <p><strong>Graph Algorithms</strong>:</p> <ul> <li><code>graph.pageRank()</code> - PageRank centrality</li> <li><code>graph.betweenness()</code> - Betweenness centrality</li> <li><code>graph.closeness()</code> - Closeness centrality</li> <li><code>graph.louvain()</code> - Community detection</li> <li><code>graph.labelPropagation()</code> - Label propagation</li> <li><code>graph.node2vec()</code> - Node2Vec embeddings</li> <li><code>graph.graphSAGE()</code> - GraphSAGE embeddings</li> <li><code>graph.deepWalk()</code> - DeepWalk embeddings</li> </ul> <p>See <a href="/docs/analytics/graph-algorithms" >Graph Algorithms</a> for usage.</p> <h3 id="next-steps" class="position-relative d-flex align-items-center group"> <span>Next Steps</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="next-steps" aria-haspopup="dialog" aria-label="Share link: Next Steps"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3><ul> <li><a href="/docs/gql/guide" >GQL Guide</a> - Query language tutorial</li> <li><a href="/docs/model/data-model-and-types" >Data Model and Types</a> - Type system</li> <li><a href="/docs/analytics/graph-algorithms" >Graph Algorithms</a> - Algorithm reference</li> <li><a href="/docs/ops/deployment" >Deployment Guide</a> - Operational commands</li> </ul>