<!-- CANARY: REQ=REQ-DOCS-001; FEATURE="Docs"; ASPECT=Documentation; STATUS=TESTED; OWNER=docs; UPDATED=2026-01-15 -->
<h2 id="command-line-interface" class="position-relative d-flex align-items-center group">
<span>Command-Line Interface</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="command-line-interface"
aria-haspopup="dialog"
aria-label="Share link: Command-Line Interface">
<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>The Geode command-line interface (CLI) provides comprehensive tools for database administration, interactive query execution, server management, and automation. The CLI is the primary interface for operators, developers, and administrators working with Geode databases.</p>
<h3 id="introduction-to-geode-cli" class="position-relative d-flex align-items-center group">
<span>Introduction to Geode CLI</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="introduction-to-geode-cli"
aria-haspopup="dialog"
aria-label="Share link: Introduction to Geode CLI">
<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>The Geode CLI is a unified tool that combines server management, an interactive GQL shell (REPL), administrative commands, backup and recovery operations, and monitoring and diagnostics. Built with the same Zig codebase as the server, the CLI provides native performance and direct access to all database features.</p>
<p>The CLI follows Unix philosophy with composable commands, pipe-friendly output, consistent exit codes, and comprehensive help documentation. All commands support both interactive and scripted usage.</p>
<h3 id="installation-and-setup" class="position-relative d-flex align-items-center group">
<span>Installation and Setup</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="installation-and-setup"
aria-haspopup="dialog"
aria-label="Share link: Installation and Setup">
<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="basic-installation" class="position-relative d-flex align-items-center group">
<span>Basic Installation</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="basic-installation"
aria-haspopup="dialog"
aria-label="Share link: Basic Installation">
<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"># Install from package manager (Debian/Ubuntu)</span>
</span></span><span class="line"><span class="cl">sudo apt-get update
</span></span><span class="line"><span class="cl">sudo apt-get install geode
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Install from package manager (macOS)</span>
</span></span><span class="line"><span class="cl">brew install geodedb/geode/geode
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Verify installation</span>
</span></span><span class="line"><span class="cl">geode version
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Show help</span>
</span></span><span class="line"><span class="cl">geode --help
</span></span><span class="line"><span class="cl">geode <span class="nb">help</span>
</span></span></code></pre></div>
<h4 id="configuration" class="position-relative d-flex align-items-center group">
<span>Configuration</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="configuration"
aria-haspopup="dialog"
aria-label="Share link: Configuration">
<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>Configure CLI defaults:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Set default connection</span>
</span></span><span class="line"><span class="cl">geode config <span class="nb">set</span> connection.default<span class="o">=</span>localhost:3141
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Set output format</span>
</span></span><span class="line"><span class="cl">geode config <span class="nb">set</span> output.format<span class="o">=</span>table <span class="c1"># table, json, csv</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Set editor for query editing</span>
</span></span><span class="line"><span class="cl">geode config <span class="nb">set</span> <span class="nv">editor</span><span class="o">=</span><span class="nv">$EDITOR</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># View configuration</span>
</span></span><span class="line"><span class="cl">geode config list
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Configuration file location: ~/.config/geode/config.toml</span>
</span></span></code></pre></div>
<h3 id="interactive-shell" class="position-relative d-flex align-items-center group">
<span>Interactive Shell</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"
aria-haspopup="dialog"
aria-label="Share link: Interactive 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="starting-the-shell" class="position-relative d-flex align-items-center group">
<span>Starting the Shell</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="starting-the-shell"
aria-haspopup="dialog"
aria-label="Share link: Starting the 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>
</h4><p>The interactive shell provides a REPL (Read-Eval-Print Loop) for GQL queries:</p>
<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 interactive 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"># Connect to specific server</span>
</span></span><span class="line"><span class="cl">geode shell --connect geode.example.com:3141
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Connect with authentication</span>
</span></span><span class="line"><span class="cl">geode shell --connect localhost:3141 --user admin --password
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Start with specific database</span>
</span></span><span class="line"><span class="cl">geode shell --database mydb
</span></span></code></pre></div><p>Shell session example:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">Geode Shell v0.2.18
</span></span><span class="line"><span class="cl">Connected to localhost:3141
</span></span><span class="line"><span class="cl">Database: graph
</span></span><span class="line"><span class="cl">Type \help for help, \quit to exit
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">geode> MATCH (n:User) RETURN n.name, n.age LIMIT 5;
</span></span><span class="line"><span class="cl">+------------+--------+
</span></span><span class="line"><span class="cl">| n.name | n.age |
</span></span><span class="line"><span class="cl">+------------+--------+
</span></span><span class="line"><span class="cl">| Alice | 30 |
</span></span><span class="line"><span class="cl">| Bob | 25 |
</span></span><span class="line"><span class="cl">| Charlie | 35 |
</span></span><span class="line"><span class="cl">| David | 28 |
</span></span><span class="line"><span class="cl">| Eve | 32 |
</span></span><span class="line"><span class="cl">+------------+--------+
</span></span><span class="line"><span class="cl">5 rows (12 ms)
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">geode> \timing on
</span></span><span class="line"><span class="cl">Timing enabled.
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">geode> MATCH (n:User) RETURN COUNT(n);
</span></span><span class="line"><span class="cl">+-----------+
</span></span><span class="line"><span class="cl">| COUNT(n) |
</span></span><span class="line"><span class="cl">+-----------+
</span></span><span class="line"><span class="cl">| 1000000 |
</span></span><span class="line"><span class="cl">+-----------+
</span></span><span class="line"><span class="cl">1 row (145 ms)
</span></span></code></pre></div>
<h4 id="shell-commands" class="position-relative d-flex align-items-center group">
<span>Shell 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="shell-commands"
aria-haspopup="dialog"
aria-label="Share link: Shell 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>Meta-commands (starting with backslash) control shell behavior:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Help and documentation</span>
</span></span><span class="line"><span class="cl"><span class="se">\h</span>elp <span class="c1"># Show all commands</span>
</span></span><span class="line"><span class="cl"><span class="se">\h</span>elp CREATE <span class="c1"># Help for specific GQL command</span>
</span></span><span class="line"><span class="cl"><span class="se">\?</span> <span class="c1"># Alias for \help</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Connection management</span>
</span></span><span class="line"><span class="cl"><span class="se">\c</span>onnect localhost:3141 <span class="c1"># Connect to database</span>
</span></span><span class="line"><span class="cl"><span class="se">\d</span>isconnect <span class="c1"># Disconnect</span>
</span></span><span class="line"><span class="cl"><span class="se">\r</span>econnect <span class="c1"># Reconnect to current database</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Query execution</span>
</span></span><span class="line"><span class="cl"><span class="se">\e</span> <span class="c1"># Edit query in external editor</span>
</span></span><span class="line"><span class="cl"><span class="se">\g</span> <span class="c1"># Execute current query (same as ;)</span>
</span></span><span class="line"><span class="cl"><span class="se">\t</span>iming on<span class="p">|</span>off <span class="c1"># Show/hide query execution time</span>
</span></span><span class="line"><span class="cl"><span class="se">\w</span>atch <span class="m">5</span> <span class="c1"># Re-execute query every 5 seconds</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Output formatting</span>
</span></span><span class="line"><span class="cl"><span class="se">\f</span>ormat table <span class="c1"># Table format (default)</span>
</span></span><span class="line"><span class="cl"><span class="se">\f</span>ormat json <span class="c1"># JSON output</span>
</span></span><span class="line"><span class="cl"><span class="se">\f</span>ormat csv <span class="c1"># CSV output</span>
</span></span><span class="line"><span class="cl"><span class="se">\f</span>ormat yaml <span class="c1"># YAML output</span>
</span></span><span class="line"><span class="cl"><span class="se">\e</span>xpanded on<span class="p">|</span>off <span class="c1"># Toggle expanded/vertical output</span>
</span></span><span class="line"><span class="cl"><span class="se">\p</span>set border <span class="m">2</span> <span class="c1"># Set table border style (0-2)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Transaction control</span>
</span></span><span class="line"><span class="cl"><span class="se">\b</span>egin <span class="c1"># Begin transaction</span>
</span></span><span class="line"><span class="cl"><span class="se">\c</span>ommit <span class="c1"># Commit transaction</span>
</span></span><span class="line"><span class="cl"><span class="se">\r</span>ollback <span class="c1"># Rollback transaction</span>
</span></span><span class="line"><span class="cl"><span class="se">\s</span>avepoint name <span class="c1"># Create savepoint</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Schema exploration</span>
</span></span><span class="line"><span class="cl"><span class="se">\d</span>n <span class="c1"># List node labels</span>
</span></span><span class="line"><span class="cl"><span class="se">\d</span>r <span class="c1"># List relationship types</span>
</span></span><span class="line"><span class="cl"><span class="se">\d</span>i <span class="c1"># List indexes</span>
</span></span><span class="line"><span class="cl"><span class="se">\d</span>t <span class="c1"># List all types</span>
</span></span><span class="line"><span class="cl"><span class="se">\d</span> User <span class="c1"># Describe User label</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Query history</span>
</span></span><span class="line"><span class="cl"><span class="se">\h</span>istory <span class="c1"># Show command history</span>
</span></span><span class="line"><span class="cl"><span class="se">\!</span> <command> <span class="c1"># Execute shell command</span>
</span></span><span class="line"><span class="cl"><span class="se">\s</span>et VAR value <span class="c1"># Set shell variable</span>
</span></span><span class="line"><span class="cl"><span class="se">\e</span>cho message <span class="c1"># Print message</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># File operations</span>
</span></span><span class="line"><span class="cl"><span class="se">\i</span> filename.gql <span class="c1"># Execute queries from file</span>
</span></span><span class="line"><span class="cl"><span class="se">\o</span> output.txt <span class="c1"># Write output to file</span>
</span></span><span class="line"><span class="cl"><span class="se">\o</span> <span class="c1"># Stop writing to file</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Quit</span>
</span></span><span class="line"><span class="cl"><span class="se">\q</span> <span class="c1"># Quit shell</span>
</span></span><span class="line"><span class="cl"><span class="se">\q</span>uit <span class="c1"># Quit shell (alias)</span>
</span></span><span class="line"><span class="cl"><span class="nb">exit</span> <span class="c1"># Exit shell</span>
</span></span></code></pre></div>
<h4 id="multi-line-queries" class="position-relative d-flex align-items-center group">
<span>Multi-line Queries</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="multi-line-queries"
aria-haspopup="dialog"
aria-label="Share link: Multi-line Queries">
<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>The shell supports multi-line query editing:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sql" data-lang="sql"><span class="line"><span class="cl"><span class="n">geode</span><span class="o">></span><span class="w"> </span><span class="k">MATCH</span><span class="w"> </span><span class="p">(</span><span class="n">p</span><span class="p">:</span><span class="n">Person</span><span class="p">)</span><span class="o">-</span><span class="p">[:</span><span class="n">KNOWS</span><span class="p">]</span><span class="o">-></span><span class="p">(</span><span class="n">friend</span><span class="p">:</span><span class="n">Person</span><span class="p">)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="o">-></span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">p</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'Alice'</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="o">-></span><span class="w"> </span><span class="k">RETURN</span><span class="w"> </span><span class="n">friend</span><span class="p">.</span><span class="n">name</span><span class="p">,</span><span class="w"> </span><span class="n">friend</span><span class="p">.</span><span class="n">age</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="o">-></span><span class="w"> </span><span class="k">ORDER</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">friend</span><span class="p">.</span><span class="n">age</span><span class="w"> </span><span class="k">DESC</span><span class="p">;</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="o">+</span><span class="c1">---------------+-------------+
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="o">|</span><span class="w"> </span><span class="n">friend</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">friend</span><span class="p">.</span><span class="n">age</span><span class="w"> </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="o">+</span><span class="c1">---------------+-------------+
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="o">|</span><span class="w"> </span><span class="n">Bob</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">35</span><span class="w"> </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="o">|</span><span class="w"> </span><span class="n">Charlie</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">32</span><span class="w"> </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="o">|</span><span class="w"> </span><span class="n">David</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">28</span><span class="w"> </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="o">+</span><span class="c1">---------------+-------------+
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="mi">3</span><span class="w"> </span><span class="k">rows</span><span class="w"> </span><span class="p">(</span><span class="mi">8</span><span class="w"> </span><span class="n">ms</span><span class="p">)</span><span class="w">
</span></span></span></code></pre></div>
<h3 id="server-management" class="position-relative d-flex align-items-center group">
<span>Server Management</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-management"
aria-haspopup="dialog"
aria-label="Share link: Server Management">
<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="starting-and-stopping" class="position-relative d-flex align-items-center group">
<span>Starting and Stopping</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="starting-and-stopping"
aria-haspopup="dialog"
aria-label="Share link: Starting and Stopping">
<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 server</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"># Start with configuration file</span>
</span></span><span class="line"><span class="cl">geode serve --config /etc/geode/geode.conf
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Start as daemon</span>
</span></span><span class="line"><span class="cl">geode serve --daemon --pid-file /var/run/geode.pid
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Stop server</span>
</span></span><span class="line"><span class="cl">geode stop
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Stop with specific PID file</span>
</span></span><span class="line"><span class="cl">geode stop --pid-file /var/run/geode.pid
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Restart server</span>
</span></span><span class="line"><span class="cl">geode restart
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Reload configuration (without restart)</span>
</span></span><span class="line"><span class="cl">geode reload
</span></span></code></pre></div>
<h4 id="server-status" class="position-relative d-flex align-items-center group">
<span>Server Status</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-status"
aria-haspopup="dialog"
aria-label="Share link: Server Status">
<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"># Check server status</span>
</span></span><span class="line"><span class="cl">geode status
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Detailed status with metrics</span>
</span></span><span class="line"><span class="cl">geode status --verbose
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Output as JSON</span>
</span></span><span class="line"><span class="cl">geode status --format json
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Monitor server in real-time</span>
</span></span><span class="line"><span class="cl">geode status --watch <span class="m">1</span> <span class="c1"># Update every second</span>
</span></span></code></pre></div>
<h3 id="query-execution" class="position-relative d-flex align-items-center group">
<span>Query Execution</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="query-execution"
aria-haspopup="dialog"
aria-label="Share link: Query Execution">
<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="non-interactive-queries" class="position-relative d-flex align-items-center group">
<span>Non-Interactive Queries</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="non-interactive-queries"
aria-haspopup="dialog"
aria-label="Share link: Non-Interactive Queries">
<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>Execute queries from command line:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Execute single query</span>
</span></span><span class="line"><span class="cl">geode query <span class="s2">"MATCH (n:User) RETURN COUNT(n)"</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Execute with output format</span>
</span></span><span class="line"><span class="cl">geode query <span class="s2">"MATCH (n:User) RETURN n.name, n.age LIMIT 10"</span> --format table
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Execute with parameters</span>
</span></span><span class="line"><span class="cl">geode query <span class="s2">"MATCH (n:User {id: \$id}) RETURN n"</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --param <span class="nv">id</span><span class="o">=</span><span class="m">123</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --format json
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Read query from file</span>
</span></span><span class="line"><span class="cl">geode query --file queries/user-report.gql
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Read from stdin</span>
</span></span><span class="line"><span class="cl">cat query.gql <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"># Output to file</span>
</span></span><span class="line"><span class="cl">geode query <span class="s2">"MATCH (n) RETURN n"</span> --output results.csv --format csv
</span></span></code></pre></div>
<h4 id="batch-query-execution" class="position-relative d-flex align-items-center group">
<span>Batch Query Execution</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="batch-query-execution"
aria-haspopup="dialog"
aria-label="Share link: Batch Query Execution">
<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>Execute multiple queries from files:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Execute all queries in file</span>
</span></span><span class="line"><span class="cl">geode batch --file migrations/schema-v2.gql
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Execute with transaction</span>
</span></span><span class="line"><span class="cl">geode batch --file migrations/data-migration.gql --transaction
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Execute directory of files</span>
</span></span><span class="line"><span class="cl">geode batch --directory migrations/ --pattern <span class="s2">"*.gql"</span> --order<span class="o">=</span>name
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Parallel execution (independent queries)</span>
</span></span><span class="line"><span class="cl">geode batch --directory queries/ --parallel<span class="o">=</span><span class="m">4</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Continue on errors</span>
</span></span><span class="line"><span class="cl">geode batch --file queries.gql --continue-on-error <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --error-log /tmp/errors.log
</span></span></code></pre></div>
<h3 id="administration-commands" class="position-relative d-flex align-items-center group">
<span>Administration 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="administration-commands"
aria-haspopup="dialog"
aria-label="Share link: Administration 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="user-management" class="position-relative d-flex align-items-center group">
<span>User Management</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="user-management"
aria-haspopup="dialog"
aria-label="Share link: User Management">
<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"># Create user</span>
</span></span><span class="line"><span class="cl">geode admin user create --username alice --password --role admin
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># List users</span>
</span></span><span class="line"><span class="cl">geode admin user list
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Change password</span>
</span></span><span class="line"><span class="cl">geode admin user password --username alice
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Grant role</span>
</span></span><span class="line"><span class="cl">geode admin user grant --username alice --role read_write
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Revoke role</span>
</span></span><span class="line"><span class="cl">geode admin user revoke --username alice --role admin
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Delete user</span>
</span></span><span class="line"><span class="cl">geode admin user delete --username alice
</span></span></code></pre></div>
<h4 id="database-management" class="position-relative d-flex align-items-center group">
<span>Database Management</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="database-management"
aria-haspopup="dialog"
aria-label="Share link: Database Management">
<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"># Create database</span>
</span></span><span class="line"><span class="cl">geode admin database create --name testdb
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># List databases</span>
</span></span><span class="line"><span class="cl">geode admin database list
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Describe database</span>
</span></span><span class="line"><span class="cl">geode admin database describe --name testdb
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Drop database</span>
</span></span><span class="line"><span class="cl">geode admin database drop --name testdb --confirm
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Database statistics</span>
</span></span><span class="line"><span class="cl">geode admin database stats --name graph
</span></span></code></pre></div>
<h4 id="index-management" class="position-relative d-flex align-items-center group">
<span>Index Management</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="index-management"
aria-haspopup="dialog"
aria-label="Share link: Index Management">
<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"># Create index</span>
</span></span><span class="line"><span class="cl">geode admin index create --label User --property email
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># List indexes</span>
</span></span><span class="line"><span class="cl">geode admin index list
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Describe index</span>
</span></span><span class="line"><span class="cl">geode admin index describe --name idx_user_email
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Rebuild index</span>
</span></span><span class="line"><span class="cl">geode admin index rebuild --name idx_user_email
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Drop index</span>
</span></span><span class="line"><span class="cl">geode admin index drop --name idx_user_email
</span></span></code></pre></div>
<h3 id="backup-and-recovery" class="position-relative d-flex align-items-center group">
<span>Backup and Recovery</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-and-recovery"
aria-haspopup="dialog"
aria-label="Share link: Backup and Recovery">
<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-operations" class="position-relative d-flex align-items-center group">
<span>Backup Operations</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-operations"
aria-haspopup="dialog"
aria-label="Share link: Backup Operations">
<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"># Create full backup</span>
</span></span><span class="line"><span class="cl">geode backup create --type full --output /backups/geode-full.tar.gz
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Create incremental backup</span>
</span></span><span class="line"><span class="cl">geode backup create --type incremental <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --base /backups/geode-full.tar.gz <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --output /backups/geode-incr-<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"># List backups</span>
</span></span><span class="line"><span class="cl">geode backup list --directory /backups
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Verify backup</span>
</span></span><span class="line"><span class="cl">geode backup verify /backups/geode-full.tar.gz
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Schedule automatic backups</span>
</span></span><span class="line"><span class="cl">geode backup schedule --type full --cron <span class="s2">"0 2 * * *"</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --output /backups/daily/geode-%Y%m%d.tar.gz
</span></span></code></pre></div>
<h4 id="recovery-operations" class="position-relative d-flex align-items-center group">
<span>Recovery Operations</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="recovery-operations"
aria-haspopup="dialog"
aria-label="Share link: Recovery Operations">
<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 backup</span>
</span></span><span class="line"><span class="cl">geode restore --backup /backups/geode-full.tar.gz <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --target /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 recover <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --backup /backups/geode-full.tar.gz <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --wal-archive /wal-archive <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --target-time <span class="s2">"2026-01-24 14:30:00"</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Verify restored database</span>
</span></span><span class="line"><span class="cl">geode verify --data-dir /var/lib/geode --full-scan
</span></span></code></pre></div>
<h3 id="monitoring-and-diagnostics" class="position-relative d-flex align-items-center group">
<span>Monitoring and Diagnostics</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="monitoring-and-diagnostics"
aria-haspopup="dialog"
aria-label="Share link: Monitoring and Diagnostics">
<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="performance-monitoring" class="position-relative d-flex align-items-center group">
<span>Performance Monitoring</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="performance-monitoring"
aria-haspopup="dialog"
aria-label="Share link: Performance Monitoring">
<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"># Show current metrics</span>
</span></span><span class="line"><span class="cl">geode metrics
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Continuous monitoring</span>
</span></span><span class="line"><span class="cl">geode metrics --watch <span class="m">1</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Specific metric groups</span>
</span></span><span class="line"><span class="cl">geode metrics --group queries,connections,performance
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Export metrics for Prometheus</span>
</span></span><span class="line"><span class="cl">geode metrics --format prometheus > /var/lib/prometheus/geode.prom
</span></span></code></pre></div>
<h4 id="query-analysis" class="position-relative d-flex align-items-center group">
<span>Query Analysis</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="query-analysis"
aria-haspopup="dialog"
aria-label="Share link: Query Analysis">
<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"># Explain query</span>
</span></span><span class="line"><span class="cl">geode query <span class="s2">"EXPLAIN MATCH (n:User) RETURN n"</span> --format yaml
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Profile query</span>
</span></span><span class="line"><span class="cl">geode query <span class="s2">"PROFILE MATCH (n:User) RETURN n"</span> --format json
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Analyze slow queries</span>
</span></span><span class="line"><span class="cl">geode admin slow-queries --min-duration <span class="m">1000</span> <span class="c1"># Queries >1 second</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Query statistics</span>
</span></span><span class="line"><span class="cl">geode admin query-stats --top <span class="m">10</span> <span class="c1"># Top 10 queries by execution time</span>
</span></span></code></pre></div>
<h4 id="system-diagnostics" class="position-relative d-flex align-items-center group">
<span>System Diagnostics</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="system-diagnostics"
aria-haspopup="dialog"
aria-label="Share link: System Diagnostics">
<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"># Health check</span>
</span></span><span class="line"><span class="cl">geode admin health
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Connection diagnostics</span>
</span></span><span class="line"><span class="cl">geode admin connections list
</span></span><span class="line"><span class="cl">geode admin connections show --id conn-123
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Resource usage</span>
</span></span><span class="line"><span class="cl">geode admin resources
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Logs</span>
</span></span><span class="line"><span class="cl">geode logs --tail <span class="m">100</span>
</span></span><span class="line"><span class="cl">geode logs --level error --since <span class="s2">"1 hour ago"</span>
</span></span><span class="line"><span class="cl">geode logs --follow <span class="c1"># Continuous log streaming</span>
</span></span></code></pre></div>
<h3 id="scripting-and-automation" class="position-relative d-flex align-items-center group">
<span>Scripting and Automation</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="scripting-and-automation"
aria-haspopup="dialog"
aria-label="Share link: Scripting and Automation">
<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="shell-scripting" class="position-relative d-flex align-items-center group">
<span>Shell Scripting</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-scripting"
aria-haspopup="dialog"
aria-label="Share link: Shell Scripting">
<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>Integrate Geode CLI in shell scripts:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="cp">#!/bin/bash
</span></span></span><span class="line"><span class="cl"><span class="cp"></span>
</span></span><span class="line"><span class="cl"><span class="c1"># Check if server is running</span>
</span></span><span class="line"><span class="cl"><span class="k">if</span> ! geode status --quiet<span class="p">;</span> <span class="k">then</span>
</span></span><span class="line"><span class="cl"> <span class="nb">echo</span> <span class="s2">"Geode is not running"</span>
</span></span><span class="line"><span class="cl"> <span class="nb">exit</span> <span class="m">1</span>
</span></span><span class="line"><span class="cl"><span class="k">fi</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Execute query and capture output</span>
</span></span><span class="line"><span class="cl"><span class="nv">RESULT</span><span class="o">=</span><span class="k">$(</span>geode query <span class="s2">"MATCH (n:User) RETURN COUNT(n)"</span> --format json<span class="k">)</span>
</span></span><span class="line"><span class="cl"><span class="nv">COUNT</span><span class="o">=</span><span class="k">$(</span><span class="nb">echo</span> <span class="s2">"</span><span class="nv">$RESULT</span><span class="s2">"</span> <span class="p">|</span> jq -r <span class="s1">'.data[0]["COUNT(n)"]'</span><span class="k">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nb">echo</span> <span class="s2">"Total users: </span><span class="nv">$COUNT</span><span class="s2">"</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Conditional execution</span>
</span></span><span class="line"><span class="cl"><span class="k">if</span> <span class="o">[</span> <span class="s2">"</span><span class="nv">$COUNT</span><span class="s2">"</span> -gt <span class="m">1000000</span> <span class="o">]</span><span class="p">;</span> <span class="k">then</span>
</span></span><span class="line"><span class="cl"> <span class="nb">echo</span> <span class="s2">"Running maintenance..."</span>
</span></span><span class="line"><span class="cl"> geode admin vacuum --analyze
</span></span><span class="line"><span class="cl"><span class="k">fi</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Exit codes</span>
</span></span><span class="line"><span class="cl"><span class="c1"># 0 = success</span>
</span></span><span class="line"><span class="cl"><span class="c1"># 1 = error</span>
</span></span><span class="line"><span class="cl"><span class="c1"># 2 = connection failed</span>
</span></span></code></pre></div>
<h4 id="csv-importexport" class="position-relative d-flex align-items-center group">
<span>CSV Import/Export</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="csv-importexport"
aria-haspopup="dialog"
aria-label="Share link: CSV Import/Export">
<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"># Export to CSV</span>
</span></span><span class="line"><span class="cl">geode query <span class="s2">"MATCH (n:User) RETURN n.id, n.name, n.email"</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --format csv <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --output users.csv
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Import from CSV</span>
</span></span><span class="line"><span class="cl">geode import csv <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --input users.csv <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --node-label User <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --id-column <span class="m">0</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --property-columns 1,2 <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --property-names name,email
</span></span></code></pre></div>
<h4 id="json-processing" class="position-relative d-flex align-items-center group">
<span>JSON Processing</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="json-processing"
aria-haspopup="dialog"
aria-label="Share link: JSON Processing">
<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"># Query with JSON output for processing</span>
</span></span><span class="line"><span class="cl">geode query <span class="s2">"MATCH (n:User) RETURN n"</span> --format json <span class="p">|</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> jq <span class="s1">'.data[].n.properties | {id, name, email}'</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Combine with other tools</span>
</span></span><span class="line"><span class="cl">geode query <span class="s2">"MATCH (n:User) RETURN n.email"</span> --format json <span class="p">|</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> jq -r <span class="s1">'.data[].["n.email"]'</span> <span class="p">|</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> mail -s <span class="s2">"User emails"</span>
[email protected]
</span></span></code></pre></div>
<h3 id="best-practices" class="position-relative d-flex align-items-center group">
<span>Best Practices</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="best-practices"
aria-haspopup="dialog"
aria-label="Share link: Best Practices">
<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><ol>
<li><strong>Configuration</strong>: Use configuration files for repeated connection settings</li>
<li><strong>Scripting</strong>: Use <code>--format json</code> for scripting and automation</li>
<li><strong>Error Handling</strong>: Check exit codes in scripts for proper error handling</li>
<li><strong>Parameters</strong>: Always use parameterized queries to prevent injection</li>
<li><strong>Transactions</strong>: Use transactions for multi-query operations requiring atomicity</li>
<li><strong>Logging</strong>: Enable logging for troubleshooting and auditing</li>
<li><strong>Aliases</strong>: Create shell aliases for frequently used commands</li>
<li><strong>Documentation</strong>: Document automation scripts and scheduled tasks</li>
</ol>
<h3 id="troubleshooting" class="position-relative d-flex align-items-center group">
<span>Troubleshooting</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="troubleshooting"
aria-haspopup="dialog"
aria-label="Share link: Troubleshooting">
<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="connection-issues" class="position-relative d-flex align-items-center group">
<span>Connection Issues</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="connection-issues"
aria-haspopup="dialog"
aria-label="Share link: Connection Issues">
<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"># Test connectivity</span>
</span></span><span class="line"><span class="cl">geode admin ping --host localhost:3141
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Verbose connection diagnostics</span>
</span></span><span class="line"><span class="cl">geode shell --connect localhost:3141 --verbose
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Check logs</span>
</span></span><span class="line"><span class="cl">geode logs --filter connection --level debug
</span></span></code></pre></div>
<h4 id="performance-issues" class="position-relative d-flex align-items-center group">
<span>Performance Issues</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="performance-issues"
aria-haspopup="dialog"
aria-label="Share link: Performance Issues">
<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"># Profile slow query</span>
</span></span><span class="line"><span class="cl">geode query <span class="s2">"PROFILE MATCH (n)-[r*1..5]-(m) RETURN COUNT(*)"</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --format yaml
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Check server resources</span>
</span></span><span class="line"><span class="cl">geode admin resources --watch <span class="m">1</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Analyze query plan</span>
</span></span><span class="line"><span class="cl">geode query <span class="s2">"EXPLAIN MATCH (n:User) WHERE n.email = '
[email protected]' RETURN n"</span>
</span></span></code></pre></div>
<h4 id="data-issues" class="position-relative d-flex align-items-center group">
<span>Data Issues</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-issues"
aria-haspopup="dialog"
aria-label="Share link: Data Issues">
<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"># Verify database integrity</span>
</span></span><span class="line"><span class="cl">geode verify --full-scan
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Check for corrupted indexes</span>
</span></span><span class="line"><span class="cl">geode admin index verify --all
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Repair database</span>
</span></span><span class="line"><span class="cl">geode admin repair --backup-first --verify-after
</span></span></code></pre></div>
<h3 id="related-topics" class="position-relative d-flex align-items-center group">
<span>Related Topics</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="related-topics"
aria-haspopup="dialog"
aria-label="Share link: Related Topics">
<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="/tags/repl/"
>REPL</a>
- Interactive shell features</li>
<li><a
href="/tags/server/"
>Server Configuration</a>
- Server management</li>
<li><a
href="/tags/backup/"
>Backup</a>
- Backup and recovery</li>
<li><a
href="/tags/monitoring/"
>Monitoring</a>
- Monitoring and metrics</li>
</ul>
<h3 id="further-reading" class="position-relative d-flex align-items-center group">
<span>Further Reading</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="further-reading"
aria-haspopup="dialog"
aria-label="Share link: Further Reading">
<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/reference/cli-and-api/"
>CLI and API Reference</a>
- Complete command reference</li>
<li><a
href="/docs/architecture/cli-design/"
>CLI Design</a>
- CLI architecture documentation</li>
<li><a
href="/docs/tutorials/repl-basics/"
>REPL Basics</a>
- Interactive shell tutorial</li>
<li><a
href="/docs/query/performance-tuning/"
>Performance Tuning</a>
- Performance optimization</li>
</ul>