<!-- 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 "RETURN 1 AS x"</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 (<code>geode serve</code>)</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 <path></code></td>
<td>Data directory</td>
<td><code>./data</code></td>
</tr>
<tr>
<td><code>--listen <addr:port></code></td>
<td>Listen address</td>
<td><code>0.0.0.0:3141</code></td>
</tr>
<tr>
<td><code>--cert <path></code></td>
<td>TLS certificate path</td>
<td>auto-generated if missing</td>
</tr>
<tr>
<td><code>--key <path></code></td>
<td>TLS private key path</td>
<td>auto-generated if missing</td>
</tr>
<tr>
<td><code>--log-level <level></code></td>
<td><code>debug|info|warn|error</code></td>
<td><code>info</code></td>
</tr>
<tr>
<td><code>--idle-timeout <ms></code></td>
<td>QUIC idle timeout</td>
<td><code>300000</code></td>
</tr>
<tr>
<td><code>--persist-interval <ms></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 (<code>geode query</code>)</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">"RETURN 1 AS x"</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">"RETURN 1 AS x"</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">"MATCH (n) RETURN n LIMIT 10"</span> --server 127.0.0.1:3141
</span></span><span class="line"><span class="cl">geode query --format table <span class="s2">"MATCH (n) RETURN n LIMIT 10"</span> --server 127.0.0.1:3141
</span></span><span class="line"><span class="cl">geode query --format csv <span class="s2">"MATCH (n) RETURN n LIMIT 10"</span> --server 127.0.0.1:3141
</span></span><span class="line"><span class="cl">geode query --format dot <span class="s2">"MATCH (a)-[r]->(b) RETURN a, r, b"</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">"MATCH (p:Person) RETURN p.name"</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">"MATCH (n) RETURN count(n)"</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 <dsn></code></td>
<td>Connection DSN</td>
<td>-</td>
</tr>
<tr>
<td><code>-f, --file <path></code></td>
<td>Read query from file</td>
<td>-</td>
</tr>
<tr>
<td><code>-g, --graph <name></code></td>
<td>Graph name (prepends <code>USE GRAPH</code>)</td>
<td>-</td>
</tr>
<tr>
<td><code>--format <fmt></code></td>
<td>Output format (<code>json|table|csv|dot</code>)</td>
<td><code>json</code></td>
</tr>
<tr>
<td><code>--page-size <n></code></td>
<td>Results page size</td>
<td><code>1000</code></td>
</tr>
<tr>
<td><code>--timeout <seconds></code></td>
<td>Connection timeout in seconds</td>
<td><code>30</code></td>
</tr>
<tr>
<td><code>--retry <count></code></td>
<td>Retry attempts on failure</td>
<td><code>0</code></td>
</tr>
<tr>
<td><code>--server <addr:port></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 <path></code></td>
<td>CA certificate for server verification</td>
<td>-</td>
</tr>
<tr>
<td><code>--client-cert <path></code></td>
<td>Client certificate for mTLS</td>
<td>-</td>
</tr>
<tr>
<td><code>--client-key <path></code></td>
<td>Client private key for mTLS</td>
<td>-</td>
</tr>
<tr>
<td><code>-U, --user <username></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 (<code>geode shell</code>)</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 <uri></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 <fmt></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">"Alice"</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 (<code>geode auth</code>)</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><code>geode auth</code> 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">"2024-01-15T14:30:00Z"</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("hello")</code> → <code>"HELLO"</code></td>
</tr>
<tr>
<td><code>lower()</code></td>
<td>Lowercase</td>
<td><code>RETURN lower("HELLO")</code> → <code>"hello"</code></td>
</tr>
<tr>
<td><code>substring()</code></td>
<td>Extract substring</td>
<td><code>RETURN substring("hello", 0, 3)</code> → <code>"hel"</code></td>
</tr>
<tr>
<td><code>length()</code></td>
<td>String length</td>
<td><code>RETURN length("hello")</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("42")</code> → <code>42</code></td>
</tr>
<tr>
<td><code>toFloat()</code></td>
<td>Convert to float</td>
<td><code>RETURN toFloat("3.14")</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>"42"</code></td>
</tr>
<tr>
<td><code>toBoolean()</code></td>
<td>Convert to boolean</td>
<td><code>RETURN toBoolean("true")</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>
API Reference and CLI Manual
Command-line reference for `geode` (with geoded/geodec compatibility) and the full Geode GQL surface: keywords, functions, types, procedures, and operational commands