1<!DOCTYPE html><!--_lenpRjyv0N2poqEfJnlV--><html lang="en" class="dark geist_670e808c-module__JdxiwG__variable jetbrains_mono_6b11738f-module__c5tpUG__variable"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/70bc3e132a0a741e-s.p.15008bfb.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/caa3a2e1cccd8315-s.p.3b6cae6d.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" as="image" imageSrcSet="/_next/image?url=%2Fimages%2Fslycode_logo_transparent.webp&w=64&q=75 1x, /_next/image?url=%2Fimages%2Fslycode_logo_transparent.webp&w=128&q=75 2x"/><link rel="stylesheet" href="/_next/static/chunks/a54a657173f64451.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/6a36432ceee9aa5a.js"/>
1<script src="/_next/static/chunks/72c822cfe5b6f4f2.js" async=""></script>
1<script src="/_next/static/chunks/aee6c7720838f8a2.js" async=""></script>
1<script src="/_next/static/chunks/01bf887ab4501022.js" async=""></script>
1<script src="/_next/static/chunks/turbopack-8bd13f7f223dd005.js" async=""></script>
1<script src="/_next/static/chunks/db0f585bf64ce127.js" async=""></script>
1<script src="/_next/static/chunks/3d938b303d0ccff8.js" async=""></script>
1<script src="/_next/static/chunks/ff1a16fafef87110.js" async=""></script>
1<script src="/_next/static/chunks/d2be314c3ece3fbe.js" async=""></script>
1<script src="/_next/static/chunks/28db660a76b123c2.js" async=""></script>
1<meta name="next-size-adjust" content=""/><title>Code Mode | SlyCode Docs</title><meta name="description" content="Code Mode turns every project into a Codebase Atlas: a zoomable, AI-maintained map of your code backed by a real editor, search, symbol index, git tools, and an embedded agent terminal."/><link rel="manifest" href="/manifest.json"/><link rel="canonical" href="https://slycode.ai/docs/code-mode"/><meta property="og:title" content="SlyCode | Workspace Manager for AI Coding Agents"/><meta property="og:description" content="Give each task its own workspace: terminal, context, and persistent session. Pick up any task exactly where you left off."/><meta property="og:url" content="https://slycode.ai"/><meta property="og:site_name" content="SlyCode"/><meta property="og:image:alt" content="SlyCode: Workspace Manager for AI Coding Agents"/><meta property="og:image:type" content="image/png"/><meta property="og:image" content="https://slycode.ai/opengraph-image?4811d5f333e4c7cf"/><meta property="og:image:width" content="1200"/><meta property="og:image:height" content="630"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:creator" content="@slycode_ai"/><meta name="twitter:title" content="SlyCode | Workspace Manager for AI Coding Agents"/><meta name="twitter:description" content="Give each task its own workspace: terminal, context, and persistent session. Pick up any task exactly where you left off."/><meta name="twitter:image:alt" content="SlyCode: Workspace Manager for AI Coding Agents"/><meta name="twitter:image:type" content="image/png"/><meta name="twitter:image" content="https://slycode.ai/opengraph-image?4811d5f333e4c7cf"/><meta name="twitter:image:width" content="1200"/><meta name="twitter:image:height" content="630"/><link rel="icon" href="/favicon.png"/><link rel="apple-touch-icon" href="/apple-touch-icon.png"/>
1<script src="/_next/static/chunks/a6dad97d9634a72d.js" noModule=""></script>
1</head><body class="flex min-h-screen flex-col pt-16"><div hidden=""><!--$--><!--/$--></div>
1<script>document.documentElement.classList.add('js-ready')</script>
1<script type="application/ld+json">{"@context":"https://schema.org","@type":"SoftwareApplication","name":"SlyCode","description":"Workspace manager for AI coding agents. Give each task its own workspace: terminal, context, and persistent session.","applicationCategory":"DeveloperApplication","operatingSystem":"Linux, macOS","url":"https://slycode.ai","offers":{"@type":"Offer","price":"0","priceCurrency":"USD","description":"Free and open core. The complete solo developer experience."},"license":"https://opensource.org/licenses/MIT"}</script>
1<nav class="neon-border !fixed top-0 right-0 left-0 z-30 transition-[background-color,backdrop-filter] motion-safe:duration-(--duration-base) bg-transparent backdrop-blur-none"><div class="mx-auto flex h-16 max-w-6xl items-center justify-between px-6"><a href="/" class="shrink-0 rounded-lg p-0.5"><img alt="SlyCode" width="52" height="52" decoding="async" data-nimg="1" class="h-[52px] w-[52px] object-contain" style="color:transparent" srcSet="/_next/image?url=%2Fimages%2Fslycode_logo_transparent.webp&w=64&q=75 1x, /_next/image?url=%2Fimages%2Fslycode_logo_transparent.webp&w=128&q=75 2x" src="/_next/image?url=%2Fimages%2Fslycode_logo_transparent.webp&w=128&q=75"/></a><div class="hidden items-center gap-6 md:flex"><a href="/#pricing" class="relative font-mono text-sm tracking-wide transition-colors duration-(--duration-fast) text-void-400 hover:text-neon-blue">Pricing</a><a href="/docs/installation" class="relative font-mono text-sm tracking-wide transition-colors duration-(--duration-fast) text-neon-blue">Docs<span class="absolute -bottom-1 left-0 h-px w-full bg-neon-blue shadow-[0_0_6px_rgba(0,191,255,0.5)]"></span></a><a href="https://github.com/slycode-ai/slycode" target="_blank" rel="noopener noreferrer" class="inline-flex items-center gap-1.5 rounded-md border border-void-700/50 bg-void-900/50 px-3 py-1.5 font-mono text-sm tracking-wide text-void-400 transition-colors duration-(--duration-fast) hover:border-void-600 hover:text-void-200 "><svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"></path></svg><svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor" class="text-neon-orange/80" aria-hidden="true"><path d="M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z"></path></svg><span>Star</span></a><button class="relative font-mono text-sm tracking-wide text-void-400 transition-colors duration-(--duration-fast) hover:text-neon-blue">Contact</button><a href="/#getting-started" class="rounded-md border border-neon-blue/30 bg-neon-blue/10 px-4 py-1.5 font-mono text-sm tracking-wide text-neon-blue transition-colors duration-(--duration-fast) hover:bg-neon-blue/20 hover:border-neon-blue/50">Get Started</a></div><button class="rounded-lg p-2 text-void-400 transition-colors hover:text-void-100 md:hidden" aria-label="Open menu"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><line x1="3" y1="6" x2="21" y2="6"></line><line x1="3" y1="12" x2="21" y2="12"></line><line x1="3" y1="18" x2="21" y2="18"></line></svg></button></div></nav><main class="flex-1"><div class="mx-auto max-w-6xl px-6 pt-24 pb-20 md:flex md:gap-10"><aside class="mb-8 md:mb-0 md:w-48 md:shrink-0"><nav aria-label="Documentation"><ul class="flex gap-1 overflow-x-auto border-b border-void-800/50 pb-3 md:sticky md:top-20 md:block md:space-y-1 md:overflow-visible md:border-b-0 md:pb-0"><li class="shrink-0"><a href="/docs/installation" class="block rounded-md px-3 py-1.5 font-mono text-sm tracking-wide transition-colors duration-(--duration-fast) text-void-400 hover:text-neon-blue">Installation</a></li><li class="shrink-0"><a href="/docs/kanban" class="block rounded-md px-3 py-1.5 font-mono text-sm tracking-wide transition-colors duration-(--duration-fast) text-void-400 hover:text-neon-blue">Kanban Workflow</a></li><li class="shrink-0"><a href="/docs/skills" class="block rounded-md px-3 py-1.5 font-mono text-sm tracking-wide transition-colors duration-(--duration-fast) text-void-400 hover:text-neon-blue">Skills</a></li><li class="shrink-0"><a href="/docs/providers" class="block rounded-md px-3 py-1.5 font-mono text-sm tracking-wide transition-colors duration-(--duration-fast) text-void-400 hover:text-neon-blue">Multi-Provider</a></li><li class="shrink-0"><a href="/docs/messaging" class="block rounded-md px-3 py-1.5 font-mono text-sm tracking-wide transition-colors duration-(--duration-fast) text-void-400 hover:text-neon-blue">Messaging & Voice</a></li><li class="shrink-0"><a href="/docs/automations" class="block rounded-md px-3 py-1.5 font-mono text-sm tracking-wide transition-colors duration-(--duration-fast) text-void-400 hover:text-neon-blue">Automations</a></li><li class="shrink-0"><a href="/docs/context-priming" class="block rounded-md px-3 py-1.5 font-mono text-sm tracking-wide transition-colors duration-(--duration-fast) text-void-400 hover:text-neon-blue">Context Priming</a></li><li class="shrink-0"><a href="/docs/code-mode" aria-current="page" class="block rounded-md px-3 py-1.5 font-mono text-sm tracking-wide transition-colors duration-(--duration-fast) bg-neon-blue/10 text-neon-blue">
1Code Mode</a></li><li class="shrink-0"><a href="/docs/configuration" class="block rounded-md px-3 py-1.5 font-mono text-sm tracking-wide transition-colors duration-(--duration-fast) text-void-400 hover:text-neon-blue">Configuration</a></li><li class="shrink-0"><a href="/docs/troubleshooting" class="block rounded-md px-3 py-1.5 font-mono text-sm tracking-wide transition-colors duration-(--duration-fast) text-void-400 hover:text-neon-blue">Troubleshooting</a></li><li class="shrink-0"><a href="/docs/changelog" class="block rounded-md px-3 py-1.5 font-mono text-sm tracking-wide transition-colors duration-(--duration-fast) text-void-400 hover:text-neon-blue">Changelog</a></li></ul></nav></aside><div class="min-w-0 flex-1"><article><header><div class="font-mono text-[10px] tracking-[0.22em] text-neon-blue-400 uppercase">Core Concepts</div><h1 class="mt-1 text-3xl font-semibold tracking-tight text-void-100">Code Mode</h1><p class="mt-4 max-w-2xl text-[15px] leading-relaxed text-void-400">Every project in SlyCode has two whole-screen modes. The Board | Code Mode toggle in the project header flips the kanban dashboard into the Codebase Atlas: a zoomable map of the codebase with AI-written explanations, backed by a real code editor, search, symbol index, git tools, and an embedded agent terminal.</p></header><section id="why" class="mt-12 scroll-mt-20"><h2 class="text-xl font-semibold tracking-tight text-void-100"><a href="#why" class="transition-colors duration-(--duration-fast) hover:text-neon-blue">Why Code Mode exists</a></h2><div class="mt-4 space-y-4 text-sm leading-relaxed text-void-300 [&_a]:text-neon-blue [&_a:hover]:underline [&_code]:rounded [&_code]:bg-void-800/80 [&_code]:px-1.5 [&_code]:py-0.5 [&_code]:font-mono [&_code]:text-[13px] [&_code]:text-void-200 [&_h3]:mt-8 [&_h3]:text-base [&_h3]:font-semibold [&_h3]:text-void-100 [&_li]:my-1.5 [&_ol]:list-decimal [&_ol]:pl-5 [&_strong]:font-semibold [&_strong]:text-void-100 [&_ul]:list-disc [&_ul]:pl-5"><p>Months of agentic development disconnect you from your own code: structure, key files, and how components hang together fade. Code Mode answers "what is this code and what changed" at a glance and keeps you on top of a codebase you no longer write by hand, without opening an IDE.</p><p>The layout: a collapsible left rail (files, symbols, search, git), a main canvas with breadcrumb navigation, a drag-resizable Atlas terminal docked on the right, and a bottom status strip with atlas stats and a refresh action. Appending <code>?view=code</code> to a project URL deep-links straight into Code Mode. State survives switching modes: the open terminal and any delivered result deck are restored when you come back, and the Board button glows when board sessions are active.</p></div></section><section id="codebase-atlas" class="mt-12 scroll-mt-20"><h2 class="text-xl font-semibold tracking-tight text-void-100"><a href="#codebase-atlas" class="transition-colors duration-(--duration-fast) hover:text-neon-blue">The Codebase Atlas</a></h2><div class="mt-4 space-y-4 text-sm leading-relaxed text-void-300 [&_a]:text-neon-blue [&_a:hover]:underline [&_code]:rounded [&_code]:bg-void-800/80 [&_code]:px-1.5 [&_code]:py-0.5 [&_code]:font-mono [&_code]:text-[13px] [&_code]:text-void-200 [&_h3]:mt-8 [&_h3]:text-base [&_h3]:font-semibold [&_h3]:text-void-100 [&_li]:my-1.5 [&_ol]:list-decimal [&_ol]:pl-5 [&_strong]:font-semibold [&_strong]:text-void-100 [&_ul]:list-disc [&_ul]:pl-5"><p>The Atlas is an AI-maintained map of the project with four zoom levels, from whole-system down to a line of code. The landing view is always the map, never a file tree.</p><div class="overflow-x-auto rounded-lg border border-void-700/50"><table class="w-full min-w-[480px] border-collapse text-left text-sm"><thead><tr class="border-b border-void-700/50 bg-void-900"><th class="px-4 py-2.5 font-mono text-[10px] font-medium tracking-[0.18em] text-void-500 uppercase">Level</th><th class="px-4 py-2.5 font-mono text-[10px] font-medium tracking-[0.18em] text-void-500 uppercase">What you see</th></tr></thead><tbody><tr class="border-b border-void-800/40 last:border-b-0"><td class="px-4 py-2.5 align-top leading-relaxed text-void-300 [&_code]:rounded [&_code]:bg-void-800/80 [&_code]:px-1.5 [&_code]:py-0.5 [&_code]:font-mono [&_code]:text-[12px] [&_code]:text-void-200"><strong>System map</strong></td><td class="px-4 py-2.5 align-top leading-relaxed text-void-300 [&_code]:rounded [&_code]:bg-void-800/80 [&_code]:px-1.5 [&_code]:py-0.5 [&_code]:font-mono [&_code]:text-[12px] [&_code]:text-void-200">One card per area, the top-level buildings of the codebase. Each card shows the area color, a five-pip churn meter (14-day git activity), and a freshness tag. First click opens a bottom drawer with the explanation and key files; second click zooms in.</td></tr><tr class="border-b border-void-800/40 last:border-b-0"><td class="px-4 py-2.5 align-top leading-relaxed text-void-300 [&_code]:rounded [&_code]:bg-void-800/80 [&_code]:px-1.5 [&_code]:py-0.5 [&_code]:font-mono [&_code]:text-[12px] [&_code]:text-void-200"><strong>Area view</strong></td><td class="px-4 py-2.5 align-top leading-relaxed text-void-300 [&_code]:rounded [&_code]:bg-void-800/80 [&_code]:px-1.5 [&_code]:py-0.5 [&_code]:font-mono [&_code]:text-[12px] [&_code]:text-void-200">The area'
1s modules as room cards, each with a name and summary. The drawer here also supports renaming the area and pinning it.</td></tr><tr class="border-b border-void-800/40 last:border-b-0"><td class="px-4 py-2.5 align-top leading-relaxed text-void-300 [&_code]:rounded [&_code]:bg-void-800/80 [&_code]:px-1.5 [&_code]:py-0.5 [&_code]:font-mono [&_code]:text-[12px] [&_code]:text-void-200"><strong>File atlas</strong></td><td class="px-4 py-2.5 align-top leading-relaxed text-void-300 [&_code]:rounded [&_code]:bg-void-800/80 [&_code]:px-1.5 [&_code]:py-0.5 [&_code]:font-mono [&_code]:text-[12px] [&_code]:text-void-200">A file's functions, classes, and types as cards with AI one-liners, ordered by kind: classes and interfaces first, then functions, methods, and constants. Clicking a symbol opens the editor at that exact line.</td></tr><tr class="border-b border-void-800/40 last:border-b-0"><td class="px-4 py-2.5 align-top leading-relaxed text-void-300 [&_code]:rounded [&_code]:bg-void-800/80 [&_code]:px-1.5 [&_code]:py-0.5 [&_code]:font-mono [&_code]:text-[12px] [&_code]:text-void-200"><strong>Editor</strong></td><td class="px-4 py-2.5 align-top leading-relaxed text-void-300 [&_code]:rounded [&_code]:bg-void-800/80 [&_code]:px-1.5 [&_code]:py-0.5 [&_code]:font-mono [&_code]:text-[12px] [&_code]:text-void-200">Monaco, opened at the chosen symbol.</td></tr></tbody></table></div><p>Trivial files with only a handful of symbols skip the file atlas and open directly in the editor. A clickable breadcrumb trail and back navigation cover the whole stack. A project with no atlas yet gets a first-scan empty state, and symbols missing a one-liner note that the coverage crawl fills them in over time.</p></div></section><section id="two-layer-model" class="mt-12 scroll-mt-20"><h2 class="text-xl font-semibold tracking-tight text-void-100"><a href="#two-layer-model" class="transition-colors duration-(--duration-fast) hover:text-neon-blue">The two-layer honesty model</a></h2><div class="mt-4 space-y-4 text-sm leading-relaxed text-void-300 [&_a]:text-neon-blue [&_a:hover]:underline [&_code]:rounded [&_code]:bg-void-800/80 [&_code]:px-1.5 [&_code]:py-0.5 [&_code]:font-mono [&_code]:text-[13px] [&_code]:text-void-200 [&_h3]:mt-8 [&_h3]:text-base [&_h3]:font-semibold [&_h3]:text-void-100 [&_li]:my-1.5 [&_ol]:list-decimal [&_ol]:pl-5 [&_strong]:font-semibold [&_strong]:text-void-100 [&_ul]:list-disc [&_ul]:pl-5"><p>Code Mode separates what is always true from what an AI wrote, so you always know which one you are looking at.</p><ul><li><strong>The deterministic substrate</strong>: file tree, Monaco editor, ripgrep full-text search, tree-sitter symbol index, and git status, diff, blame, and log. Instant, always available, always true.</li><li><strong>The AI enrichment layer</strong>: the area map, per-area explanations, module summaries, and per-symbol one-liners. Stored as schema-validated JSON artifacts inside the project (under<!-- --> <code>documentation/atlas/</code>, git-committed) and refreshed on a schedule.</li></ul><p>Freshness is content-hash based. When a described file changes on disk, its area shows as stale on the map (an amber border) until the next refresh, and a drift banner offers a refresh. The AI layer can lag, but it is flagged when it does, and the substrate never lies.</p></div></section><section id="editor" class="mt-12 scroll-mt-20"><h2 class="text-xl font-semibold tracking-tight text-void-100"><a href="#editor" class="transition-colors duration-(--duration-fast) hover:text-neon-blue">The editor</a></h2><div class="mt-4 space-y-4 text-sm leading-relaxed text-void-300 [&_a]:text-neon-blue [&_a:hover]:underline [&_code]:rounded [&_code]:bg-void-800/80 [&_code]:px-1.5 [&_code]:py-0.5 [&_code]:font-mono [&_code]:text-[13px] [&_code]:text-void-200 [&_h3]:mt-8 [&_h3]:text-base [&_h3]:font-semibold [&_h3]:text-void-100 [&_li]:my-1.5 [&_ol]:list-decimal [&_ol]:pl-5 [&_strong]:font-semibold [&_strong]:text-void-100 [&_ul]:list-disc [&_ul]:pl-5"><ul><li><strong>
1Monaco, self-hosted</strong>: no CDN dependency, works offline, follows the SlyCode light and dark theme automatically.</li><li><strong>Multi-file tabs</strong> with dirty tracking. Open files stay loaded as you move around the map, so unsaved changes survive navigation. Save via Ctrl/Cmd+S or the Save button; middle-click closes a tab.</li><li><strong>Blame footer</strong>: toggle on to see the commit hash, author, and date for the line under the cursor.</li><li><strong>Any project file is editable</strong>, dotfiles and<!-- --> <code>.env</code> included.</li></ul><aside class="rounded-lg border px-4 py-3 border-neon-blue-400/30 bg-neon-blue-400/5 text-void-300"><span class="mr-2 font-mono text-[10px] font-medium tracking-[0.18em] uppercase text-neon-blue-400">Note</span><span class="text-sm leading-relaxed">The editor is deliberately an escape hatch, not an IDE: no language server, no debugger, no extensions.</span></aside><p><strong>Explain with Atlas</strong>, a pinned toolbar action and a right-click menu entry, sends the current selection to the Atlas terminal for the agent to explain in context. With no selection it sends the word under the cursor with its line, or failing that the current line. When the agent highlights a range in return, the editor scrolls it into view, marks the lines, and shows the agent's note as a banner.</p></div></section><section id="search-and-symbols" class="mt-12 scroll-mt-20"><h2 class="text-xl font-semibold tracking-tight text-void-100"><a href="#search-and-symbols" class="transition-colors duration-(--duration-fast) hover:text-neon-blue">Search and symbols</a></h2><div class="mt-4 space-y-4 text-sm leading-relaxed text-void-300 [&_a]:text-neon-blue [&_a:hover]:underline [&_code]:rounded [&_code]:bg-void-800/80 [&_code]:px-1.5 [&_code]:py-0.5 [&_code]:font-mono [&_code]:text-[13px] [&_code]:text-void-200 [&_h3]:mt-8 [&_h3]:text-base [&_h3]:font-semibold [&_h3]:text-void-100 [&_li]:my-1.5 [&_ol]:list-decimal [&_ol]:pl-5 [&_strong]:font-semibold [&_strong]:text-void-100 [&_ul]:list-disc [&_ul]:pl-5"><p>The left rail has five tabs. The first three:</p><ul><li><strong>Files</strong>: the project tree. Gitignored files like<!-- --> <code>.env</code> show dimmed with a "gitignored (editable)" tooltip, so config files stay reachable;<!-- --> <code>node_modules</code> and build output stay hidden. The tree auto-expands to the active file while remembering your manual expand and collapse choices.</li><li><strong>Symbols</strong>: jump-to-symbol powered by a tree-sitter index. Deterministic, no language server. It covers TypeScript/TSX, JavaScript/JSX, Python, Bash, and Java, and extracts functions, classes, methods, interfaces, types, enums, and constants. The index builds incrementally in memory and searches as you type, with prefix matches ranked first.</li><li><strong>Search</strong>: full-text ripgrep search across the project, with results grouped by file, match highlighting, regex and case-sensitivity options, and a truncation note when results are capped.</li></ul></div></section><section id="git-tools" class="mt-12 scroll-mt-20"><h2 class="text-xl font-semibold tracking-tight text-void-100"><a href="#git-tools" class="transition-colors duration-(--duration-fast) hover:text-neon-blue">Git tools</a></h2><div class="mt-4 space-y-4 text-sm leading-relaxed text-void-300 [&_a]:text-neon-blue [&_a:hover]:underline [&_code]:rounded [&_code]:bg-void-800/80 [&_code]:px-1.5 [&_code]:py-0.5 [&_code]:font-mono [&_code]:text-[13px] [&_code]:text-void-200 [&_h3]:mt-8 [&_h3]:text-base [&_h3]:font-semibold [&_h3]:text-void-100 [&_li]:my-1.5 [&_ol]:list-decimal [&_ol]:pl-5 [&_strong]:font-semibold [&_strong]:text-void-100 [&_ul]:list-disc [&_ul]:pl-5"><p>The fourth rail tab is <strong>Git</strong>: live working-tree status grouped by staged, unstaged, and untracked files, a branch dropdown with switch and create-branch, and entries for a
1whole-tree diff and commit history. Two views render on the main canvas:</p><ul><li><strong>Diff viewer</strong>: whole-tree diffs as per-file collapsible cards with added and removed counts; single-file diffs render as one patch with an "Open in editor" shortcut. Any commit can be opened as its own diff view.</li><li><strong>Log view</strong>: commit history for the project or a single file (it follows renames). Clicking a commit opens its diff.</li></ul></div></section><section id="database" class="mt-12 scroll-mt-20"><h2 class="text-xl font-semibold tracking-tight text-void-100"><a href="#database" class="transition-colors duration-(--duration-fast) hover:text-neon-blue">Database schema</a></h2><div class="mt-4 space-y-4 text-sm leading-relaxed text-void-300 [&_a]:text-neon-blue [&_a:hover]:underline [&_code]:rounded [&_code]:bg-void-800/80 [&_code]:px-1.5 [&_code]:py-0.5 [&_code]:font-mono [&_code]:text-[13px] [&_code]:text-void-200 [&_h3]:mt-8 [&_h3]:text-base [&_h3]:font-semibold [&_h3]:text-void-100 [&_li]:my-1.5 [&_ol]:list-decimal [&_ol]:pl-5 [&_strong]:font-semibold [&_strong]:text-void-100 [&_ul]:list-disc [&_ul]:pl-5"><p>The fifth rail tab is <strong>Database</strong>. SlyCode discovers schema sources in the project (SQLite files, Prisma schemas, SQL DDL) and renders the tables as cards with primary and foreign key markers. Foreign-key chips jump to the related table and flash it, and a relations strip summarizes how tables connect. The Atlas can annotate tables with plain-prose descriptions; tables without annotations still render from the schema alone.</p><aside class="rounded-lg border px-4 py-3 border-neon-blue-400/30 bg-neon-blue-400/5 text-void-300"><span class="mr-2 font-mono text-[10px] font-medium tracking-[0.18em] uppercase text-neon-blue-400">Note</span><span class="text-sm leading-relaxed">Introspection is read-only and works from files in your repo. There are no live database connections.</span></aside></div></section><section id="digest-and-tours" class="mt-12 scroll-mt-20"><h2 class="text-xl font-semibold tracking-tight text-void-100"><a href="#digest-and-tours" class="transition-colors duration-(--duration-fast) hover:text-neon-blue">Catch-up digest and guided tours</a></h2><div class="mt-4 space-y-4 text-sm leading-relaxed text-void-300 [&_a]:text-neon-blue [&_a:hover]:underline [&_code]:rounded [&_code]:bg-void-800/80 [&_code]:px-1.5 [&_code]:py-0.5 [&_code]:font-mono [&_code]:text-[13px] [&_code]:text-void-200 [&_h3]:mt-8 [&_h3]:text-base [&_h3]:font-semibold [&_h3]:text-void-100 [&_li]:my-1.5 [&_ol]:list-decimal [&_ol]:pl-5 [&_strong]:font-semibold [&_strong]:text-void-100 [&_ul]:list-disc [&_ul]:pl-5"><p>Two Atlas drawer tabs keep you current with a codebase that changes while you are away.</p><ul><li><strong>Catch-up digest</strong>: a nightly summary of what changed in each area since you last read it, ordered by how much unseen change each area carries, with clickable notable files. An unseen digest pulses a dot on its tab; marking it read advances the anchor so the next digest starts where you left off.</li><li><strong>Guided tours</strong>: step-by-step walkthroughs of the codebase in a docked player, with keyboard paging and a per-step jump that opens the editor at the relevant lines. Tours track the files they reference: when the code drifts, a stale banner appears, and one click regenerates the tour against the current code. An "Ask about this step" action escalates to the Atlas terminal, and a "+ new tour" card lets you request a tour from the UI.</li></ul><p>Across projects, the main dashboard has an <strong>Atlas</strong> <!-- -->tab that gathers every project's atlas summary in one grid, with click-through into each project's Code Mode.</p></div></section><section id="atlas-terminal" class="mt-12 scroll-mt-20"><h2 class="text-xl font-semibold tracking-tight text-void-100"><a href="#atlas-terminal" class="transition-colors duration-(--duration-fast) hover:text-neon-blue">The Atlas terminal</a></h2><div class="mt-4 space-y-4 text-sm leading-relaxed text-void-300 [&_a]:text-neon-blue [&_a:hover]:underline [&_code]:rounded [&_code]:bg-void-800/80 [&_code]:px-1.5 [&_code]:py-0.5 [&_code]:font-mono [&_code]:text-[13px] [&_code]:text-void-200 [&_h3]:mt-8 [&_h3]:text-base [&_h3]:font-semibold [&_h3]:text-void-100 [&_li]:my-1.5 [&_ol]:list-decimal [&_ol]:pl-5 [&_strong]:font-semibold [&_strong]:text-void-100 [&_ul]:list-disc [&_ul]:pl-5"><p>A live provider CLI session is docked to the right of the code. Each project gets its own dedicated atlas session, separate from board sessions. On startup the session is briefed as the Atlas terminal, loads the atlas skill, and follows a "show, don't tell" rule: when you ask to see, find, or locate something, the agent drives the view rather than replying with a list of paths.</p><p>The agent drives the view through three one-shot directives:</p><div class="overflow-x-auto rounded-lg border border-void-700/50"><table class="w-full min-w-[480px] border-collapse text-left text-sm"><thead><tr class="border-b border-void-700/50 bg-void-900"><th class="px-4 py-2.5 font-mono text-[10px] font-medium tracking-[0.18em] text-void-500 uppercase">Directive</th><th class="px-4 py-2.5 font-mono text-[10px] font-medium tracking-[0.18em] text-void-500 uppercase">What it does</th></tr></thead><tbody><tr class="border-b border-void-800/40 last:border-b-0"><td class="px-4 py-2.5 align-top leading-relaxed text-void-300 [&_code]:rounded [&_code]:bg-void-800/80 [&_code]:px-1.5 [&_code]:py-0.5 [&_code]:font-mono [&_code]:text-[12px] [&_code]:text-void-200"><code>navigate</code></td><td class="px-4 py-2.5 align-top leading-relaxed text-void-300 [&_code]:rounded [&_code]:bg-void-800/80 [&_code]:px-1.5 [&_code]:py-0.5 [&_code]:font-mono [&_code]:text-[12px] [&_code]:text-void-200">Opens a file, optionally at a line, with an optional note shown as a toast.</td></tr><tr class="border-b border-void-800/40 last:border-b-0"><td class="px-4 py-2.5 align-top leading-relaxed text-void-300 [&_code]:rounded [&_code]:bg-void-800/80 [&_code]:px-1.5 [&_code]:py-0.5 [&_code]:font-mono [&_code]:text-[12px] [&_code]:text-void-200"><code>highlight</code></td><td class="px-4 py-2.5 align-top leading-relaxed text-void-300 [&_code]:rounded [&_code]:bg-void-800/80 [&_code]:px-1.5 [&_code]:py-0.5 [&_code]:font-mono [&_code]:text-[12px] [&_code]:text-void-200">Opens a file with a line range highlighted and a note banner explaining it.</td></tr><tr class="border-b border-void-800/40 last:border-b-0"><td class="px-4 py-2.5 align-top leading-relaxed text-void-300 [&_code]:rounded [&_code]:bg-void-800/80 [&_code]:px-1.5 [&_code]:py-0.5 [&_code]:font-mono [&_code]:text-[12px] [&_code]:text-void-200"><code>deck</code></td><td class="px-4 py-2.5 align-top leading-relaxed text-void-300 [&_code]:rounded [&_code]:bg-void-800/80 [&_code]:px-1.5 [&_code]:py-0.5 [&_code]:font-mono [&_code]:text-[12px] [&_code]:text-void-200">Delivers a titled list of up to 30 clickable file:line results, rendered as a docked result deck beside the code. It never floats over your co
1de.</td></tr></tbody></table></div><p>Directives are fire-and-forget. After delivery, the result deck and navigation are entirely yours; the agent is never in the interaction loop.</p></div></section><section id="sly-atlas-cli" class="mt-12 scroll-mt-20"><h2 class="text-xl font-semibold tracking-tight text-void-100"><a href="#sly-atlas-cli" class="transition-colors duration-(--duration-fast) hover:text-neon-blue">The sly-atlas CLI</a></h2><div class="mt-4 space-y-4 text-sm leading-relaxed text-void-300 [&_a]:text-neon-blue [&_a:hover]:underline [&_code]:rounded [&_code]:bg-void-800/80 [&_code]:px-1.5 [&_code]:py-0.5 [&_code]:font-mono [&_code]:text-[13px] [&_code]:text-void-200 [&_h3]:mt-8 [&_h3]:text-base [&_h3]:font-semibold [&_h3]:text-void-100 [&_li]:my-1.5 [&_ol]:list-decimal [&_ol]:pl-5 [&_strong]:font-semibold [&_strong]:text-void-100 [&_ul]:list-disc [&_ul]:pl-5"><p>The CLI is the sole write path for atlas artifacts. Agents never edit the JSON directly: every write is validated against the schema, and a rejected write leaves the atlas untouched. A confused agent can produce a rejected write, never a corrupt atlas. Writes are atomic, rejections print exactly what to fix, and the CLI runs from anywhere inside the project.</p><figure class="overflow-hidden rounded-lg border border-void-700/50 bg-void-900"><figcaption class="border-b border-void-800/60 px-4 py-2 font-mono text-[10px] tracking-[0.18em] text-void-500 uppercase">terminal</figcaption><pre class="overflow-x-auto px-4 py-3 font-mono text-[13px] leading-relaxed text-void-200"><code>sly-atlas status</code></pre></figure><div class="overflow-x-auto rounded-lg border border-void-700/50"><table class="w-full min-w-[480px] border-collapse text-left text-sm"><thead><tr class="border-b border-void-700/50 bg-void-900"><th class="px-4 py-2.5 font-mono text-[10px] font-medium tracking-[0.18em] text-void-500 uppercase">Command</th><th class="px-4 py-2.5 font-mono text-[10px] font-medium tracking-[0.18em] text-void-500 uppercase">What it does</th></tr></thead><tbody><tr class="border-b border-void-800/40 last:border-b-0"><td class="px-4 py-2.5 align-top leading-relaxed text-void-300 [&_code]:rounded [&_code]:bg-void-800/80 [&_code]:px-1.5 [&_code]:py-0.5 [&_code]:font-mono [&_code]:text-[12px] [&_code]:text-void-200"><code>sly-atlas init</code></td><td class="px-4 py-2.5 align-top leading-relaxed text-void-300 [&_code]:rounded [&_code]:bg-void-800/80 [&_code]:px-1.5 [&_code]:py-0.5 [&_code]:font-mono [&_code]:text-[12px] [&_code]:text-void-200">Scaffolds the atlas directory and a default (disabled) refresh config.</td></tr><tr class="border-b border-void-800/40 last:border-b-0"><td class="px-4 py-2.5 align-top leading-relaxed text-void-300 [&_code]:rounded [&_code]:bg-void-800/80 [&_code]:px-1.5 [&_code]:py-0.5 [&_code]:font-mono [&_code]:text-[12px] [&_code]:text-void-200"><code>sly-atlas status</code></td><td class="px-4 py-2.5 align-top leading-relaxed text-void-300 [&_code]:rounded [&_code]:bg-void-800/80 [&_code]:px-1.5 [&_code]:py-0.5 [&_code]:font-mono [&_code]:text-[12px] [&_code]:text-void-200">The work list: per-area staleness (exactly which files changed) plus per-area coverage, ending with the thinnest area to enrich next. Supports --json.</td></tr><tr class="border-b border-void-800/40 last:border-b-0"><td class="px-4 py-2.5 align-top leading-relaxed text-void-300 [&_code]:rounded [&_code]:bg-void-800/80 [&_code]:px-1.5 [&_code]:py-0.5 [&_code]:font-mono [&_code]:text-[12px] [&_code]:text-void-200"><code>sly-atlas propose-areas</code></td><td class="px-4 py-2.5 align-top leading-relaxed text-void-300 [&_code]:rounded [&_code]:bg-void-800/80 [&_code]:px-1.5 [&_code]:py-0.5 [&_code]:font-mono [&_code]:text-[12px] [&_code]:text-void-200">Writes or replaces the root map. Pinned areas must survive, and any colors the agent sends are stripped.<
1/td></tr><tr class="border-b border-void-800/40 last:border-b-0"><td class="px-4 py-2.5 align-top leading-relaxed text-void-300 [&_code]:rounded [&_code]:bg-void-800/80 [&_code]:px-1.5 [&_code]:py-0.5 [&_code]:font-mono [&_code]:text-[12px] [&_code]:text-void-200"><code>sly-atlas write-node</code></td><td class="px-4 py-2.5 align-top leading-relaxed text-void-300 [&_code]:rounded [&_code]:bg-void-800/80 [&_code]:px-1.5 [&_code]:py-0.5 [&_code]:font-mono [&_code]:text-[12px] [&_code]:text-void-200">Writes an area node. Every referenced path must exist on disk or the write is rejected, a guard against hallucinated paths. --merge enriches an existing node without dropping content.</td></tr><tr class="border-b border-void-800/40 last:border-b-0"><td class="px-4 py-2.5 align-top leading-relaxed text-void-300 [&_code]:rounded [&_code]:bg-void-800/80 [&_code]:px-1.5 [&_code]:py-0.5 [&_code]:font-mono [&_code]:text-[12px] [&_code]:text-void-200"><code>sly-atlas navigate / highlight / deck</code></td><td class="px-4 py-2.5 align-top leading-relaxed text-void-300 [&_code]:rounded [&_code]:bg-void-800/80 [&_code]:px-1.5 [&_code]:py-0.5 [&_code]:font-mono [&_code]:text-[12px] [&_code]:text-void-200">Emit the one-shot view directives, validated before delivery.</td></tr><tr class="border-b border-void-800/40 last:border-b-0"><td class="px-4 py-2.5 align-top leading-relaxed text-void-300 [&_code]:rounded [&_code]:bg-void-800/80 [&_code]:px-1.5 [&_code]:py-0.5 [&_code]:font-mono [&_code]:text-[12px] [&_code]:text-void-200"><code>sly-atlas write-digest / write-tour / write-db</code></td><td class="px-4 py-2.5 align-top leading-relaxed text-void-300 [&_code]:rounded [&_code]:bg-void-800/80 [&_code]:px-1.5 [&_code]:py-0.5 [&_code]:font-mono [&_code]:text-[12px] [&_code]:text-void-200">Write the catch-up digest, guided tours, and database annotations. Validated like every other artifact: referenced files must exist on disk.</td></tr><tr class="border-b border-void-800/40 last:border-b-0"><td class="px-4 py-2.5 align-top leading-relaxed text-void-300 [&_code]:rounded [&_code]:bg-void-800/80 [&_code]:px-1.5 [&_code]:py-0.5 [&_code]:font-mono [&_code]:text-[12px] [&_code]:text-void-200"><code>sly-atlas context</code></td><td class="px-4 py-2.5 align-top leading-relaxed text-void-300 [&_code]:rounded [&_code]:bg-void-800/80 [&_code]:px-1.5 [&_code]:py-0.5 [&_code]:font-mono [&_code]:text-[12px] [&_code]:text-void-200">Print a deterministic, budget-capped brief of an area from the atlas artifacts, for handing context to another agent.</td></tr></tbody></table></div><p>The artifacts themselves are small: a root map with a project overview, up to 16 areas, and up to 12 labeled flows between areas (the load-bearing relationships, not a full dependency graph); one node per area with its explanation, key files, modules, per-symbol one-liners, and content hashes of every file it describes; and declared collections, file families (specs, migrations, generated files) described once as a family rather than file by file. Schema limits cap counts and explanation length so the map stays legible.</p></div></section><section id="scheduled-refresh" class="mt-12 scroll-mt-20"><h2 class="text-xl font-semibold tracking-tight text-void-100"><a href="#scheduled-refresh" class="transition-colors duration-(--duration-fast) hover:text-neon-blue">Scheduled refresh and coverage crawl</a></h2><div class="mt-4 space-y-4 text-sm leading-relaxed text-void-300 [&_a]:text-neon-blue [&_a:hover]:underline [&_code]:rounded [&_code]:bg-void-800/80 [&_code]:px-1.5 [&_code]:py-0.5 [&_code]:font-mono [&_code]:text-[13px] [&_code]:text-void-200 [&_h3]:mt-8 [&_h3]:text-base [&_h3]:font-semibold [&_h3]:text-void-100 [&_li]:my-1.5 [&_ol]:list-decimal [&_ol]:pl-5 [&_strong]:font-semibold [&_strong]:text-void-100 [&_ul]:list-disc [&_ul]:pl-5"><p>The AI layer refreshes on a per-project nightly schedule, configured from a settings modal in Code Mode: an enabled toggle (refresh starts disabled until you turn it on), a cron schedule with a live human-readable preview (defaults to 3 AM), provider and model overrides, and a "Run now" button that kicks off a refresh immediately and opens the terminal.</p><ul><li><strong>Incremental by design</strong>: the agent re-analyzes only the areas the status report marks stale, then re-checks area boundaries if the codebase shifted. A project with no atlas gets a first scan instead: explore, propose 4 to 8 meaningful areas, write a node per area.</li><li><strong>Coverage crawl, every run</strong>: freshness is not completeness. Even when nothing is stale, each run enriches the one or tw
1o thinnest areas with new module and symbol summaries and declares collections for bulk file families, so the atlas grows every run and converges on full coverage.</li><li><strong>Product-owned scheduler</strong>: not a user automation card. It uses the last run time as its re-fire guard and still fires if a scheduled window was missed within the past six hours.</li></ul></div></section><section id="what-stays-yours" class="mt-12 scroll-mt-20"><h2 class="text-xl font-semibold tracking-tight text-void-100"><a href="#what-stays-yours" class="transition-colors duration-(--duration-fast) hover:text-neon-blue">What stays yours</a></h2><div class="mt-4 space-y-4 text-sm leading-relaxed text-void-300 [&_a]:text-neon-blue [&_a:hover]:underline [&_code]:rounded [&_code]:bg-void-800/80 [&_code]:px-1.5 [&_code]:py-0.5 [&_code]:font-mono [&_code]:text-[13px] [&_code]:text-void-200 [&_h3]:mt-8 [&_h3]:text-base [&_h3]:font-semibold [&_h3]:text-void-100 [&_li]:my-1.5 [&_ol]:list-decimal [&_ol]:pl-5 [&_strong]:font-semibold [&_strong]:text-void-100 [&_ul]:list-disc [&_ul]:pl-5"><p>The map is AI-maintained, but your corrections stick. Renaming an area pins it automatically, and pinned areas keep their identity across refreshes: a refresh must not rename or remove them. The visual side goes the other way: card colors are assigned deterministically by the product from a fixed palette, and layout is rendered by the product, never chosen by the AI. The agent provides structure and meaning; the product renders it.</p></div></section><section id="next-steps" class="mt-12 scroll-mt-20"><h2 class="text-xl font-semibold tracking-tight text-void-100"><a href="#next-steps" class="transition-colors duration-(--duration-fast) hover:text-neon-blue">Next steps</a></h2><div class="mt-4 space-y-4 text-sm leading-relaxed text-void-300 [&_a]:text-neon-blue [&_a:hover]:underline [&_code]:rounded [&_code]:bg-void-800/80 [&_code]:px-1.5 [&_code]:py-0.5 [&_code]:font-mono [&_code]:text-[13px] [&_code]:text-void-200 [&_h3]:mt-8 [&_h3]:text-base [&_h3]:font-semibold [&_h3]:text-void-100 [&_li]:my-1.5 [&_ol]:list-decimal [&_ol]:pl-5 [&_strong]:font-semibold [&_strong]:text-void-100 [&_ul]:list-disc [&_ul]:pl-5"><ul><li><a href="/docs/kanban">Kanban workflow</a>: the Board side of the toggle, where cards, stages, and agent sessions live.</li><li><a href="/docs/providers">Multi-provider setup</a>: choose which provider and model power the atlas session.</li></ul></div></section></article><!--$--><!--/$--></div></div></main><footer class="neon-border-top bg-void-950"><div class="mx-auto max-w-6xl px-6"><div class="flex flex-wrap items-center gap-x-6 gap-y-2 py-6"><a href="/#pricing" class="font-mono text-sm tracking-wide text-void-500 transition-colors duration-(--duration-fast) hover:text-neon-blue">Pricing</a><a href="/docs/installation" class="font-mono text-sm tracking-wide text-void-500 transition-colors duration-(--duration-fast) hover:text-neon-blue">Docs</a><a href="https://github.com/slycode-ai/slycode" target="_blank" rel="noopener noreferrer" class="font-mono text-sm tracking-wide text-void-500 transition-colors duration-(--duration-fast) hover:text-neon-blue"><span class="inline-flex items-center gap-1.5">GitHub<svg width="14" height="14" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"></path></svg></span></a><a href="https://github.com/slycode-ai/slycode/issues" target="_blank" rel="noopener noreferrer" class="font-mono text-sm tracking-wide text-void-500 transition-colors duration-(--duration-fast) hover:text-neon-blue">Report an Issue</a><button class="font-mono text-sm tracking-wide text-void-500 transition-colors duration-(--duration-fast) hover:text-neon-blue">Contact</button><a href="https://x.com/slycode_ai" target="_blank" rel="noopener noreferrer" aria-label="SlyCode on X" class="inline-flex items-center text-void-500 transition-colors duration-(--duration-fast) hover:text-neon-blue">
1<svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"></path></svg></a><a href="https://discord.gg/NSw34wB8F" target="_blank" rel="noopener noreferrer" aria-label="SlyCode on Discord" class="inline-flex items-center text-void-500 transition-colors duration-(--duration-fast) hover:text-neon-blue"><svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M20.317 4.3698a19.7913 19.7913 0 00-4.8851-1.5152.0741.0741 0 00-.0785.0371c-.211.3753-.4447.8648-.6083 1.2495-1.8447-.2762-3.68-.2762-5.4868 0-.1636-.3933-.4058-.8742-.6177-1.2495a.077.077 0 00-.0785-.037 19.7363 19.7363 0 00-4.8852 1.515.0699.0699 0 00-.0321.0277C.5334 9.0458-.319 13.5799.0992 18.0578a.0824.0824 0 00.0312.0561c2.0528 1.5076 4.0413 2.4228 5.9929 3.0294a.0777.0777 0 00.0842-.0276c.4616-.6304.8731-1.2952 1.226-1.9942a.076.076 0 00-.0416-.1057c-.6528-.2476-1.2743-.5495-1.8722-.8923a.077.077 0 01-.0076-.1277c.1258-.0943.2517-.1923.3718-.2914a.0743.0743 0 01.0776-.0105c3.9278 1.7933 8.18 1.7933 12.0614 0a.0739.0739 0 01.0785.0095c.1202.099.246.1981.3728.2924a.077.077 0 01-.0066.1276 12.2986 12.2986 0 01-1.873.8914.0766.0766 0 00-.0407.1067c.3604.698.7719 1.3628 1.225 1.9932a.076.076 0 00.0842.0286c1.961-.6067 3.9495-1.5219 6.0023-3.0294a.077.077 0 00.0313-.0552c.5004-5.177-.8382-9.6739-3.5485-13.6604a.061.061 0 00-.0312-.0286zM8.02 15.3312c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9555-2.4189 2.157-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.9555 2.4189-2.1569 2.4189zm7.9748 0c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9554-2.4189 2.1569-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.946 2.4189-2.1568 2.4189Z"></path></svg></a></div><div class="border-t border-void-800/50"></div><div class="flex items-center justify-between py-6"><div class="flex items-center gap-3"><img alt="SlyCode" loading="lazy" width="20" height="20" decoding="async" data-nimg="1" class="h-5 w-5 object-contain opacity-60" style="color:transparent" srcSet="/_next/image?url=%2Fimages%2Fslycode_logo_transparent.webp&w=32&q=75 1x, /_next/image?url=%2Fimages%2Fslycode_logo_transparent.webp&w=48&q=75 2x" src="/_next/image?url=%2Fimages%2Fslycode_logo_transparent.webp&w=48&q=75"/><span class="text-sm text-void-500">© <!-- -->2026<!-- --> SlyCode</span></div><div class="flex items-center gap-4"><a href="/privacy" class="font-mono text-sm text-void-600 transition-colors duration-(--duration-fast) hover:text-neon-blue">Privacy</a><span class="font-mono text-sm text-void-600">BUSL-1.1</span></div></div></div></footer>
1<script src="/_next/static/chunks/6a36432ceee9aa5a.js" id="_R_" async=""></script>
1<script>(self.__next_f=self.__next_f||[]).push([0])</script>
1<script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[16512,[\"/_next/static/chunks/db0f585bf64ce127.js\",\"/_next/static/chunks/3d938b303d0ccff8.js\"],\"ContactModalProvider\"]\n3:I[84834,[\"/_next/static/chunks/db0f585bf64ce127.js\",\"/_next/static/chunks/3d938b303d0ccff8.js\"],\"Nav\"]\n4:I[39756,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/d2be314c3ece3fbe.js\"],\"default\"]\n5:I[37457,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/d2be314c3ece3fbe.js\"],\"default\"]\n6:I[13642,[\"/_next/static/chunks/db0f585bf64ce127.js\",\"/_next/static/chunks/3d938b303d0ccff8.js\"],\"Footer\"]\n7:I[43880,[\"/_next/static/chunks/db0f585bf64ce127.js\",\"/_next/static/chunks/3d938b303d0ccff8.js\"],\"Analytics\"]\n8:I[95092,[\"/_next/static/chunks/db0f585bf64ce127.js\",\"/_next/static/chunks/3d938b303d0ccff8.js\",\"/_next/static/chunks/28db660a76b123c2.js\"],\"DocsSubNav\"]\n18:I[68027,[],\"default\"]\n:HL[\"/_next/static/chunks/a54a657173f64451.css\",\"style\"]\n:HL[\"/_next/static/media/70bc3e132a0a741e-s.p.15008bfb.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/caa3a2e1cccd8315-s.p.3b6cae6d.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n"])</script>
1<script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"-lenpRjyv0N2poqEfJnlV\",\"c\":[\"\",\"docs\",\"code-mode\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"docs\",{\"children\":[\"code-mode\",{\"children\":[\"__PAGE__\",{}]}]}]},\"$undefined\",\"$undefined\",true],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/a54a657173f64451.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/db0f585bf64ce127.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/3d938b303d0ccff8.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"dark geist_670e808c-module__JdxiwG__variable jetbrains_mono_6b11738f-module__c5tpUG__variable\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"className\":\"flex min-h-screen flex-col pt-16\",\"children\":[[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"document.documentElement.classList.add('js-ready')\"}}],[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"SoftwareApplication\\\",\\\"name\\\":\\\"SlyCode\\\",\\\"description\\\":\\\"Workspace manager for AI coding agents. Give each task its own workspace: terminal, context, and persistent session.\\\",\\\"applicationCategory\\\":\\\"DeveloperApplication\\\",\\\"operatingSystem\\\":\\\"Linux, macOS\\\",\\\"url\\\":\\\"https://slycode.ai\\\",\\\"offers\\\":{\\\"@type\\\":\\\"Offer\\\",\\\"price\\\":\\\"0\\\",\\\"priceCurrency\\\":\\\"USD\\\",\\\"description\\\":\\\"Free and open core. The complete solo developer experience.\\\"},\\\"license\\\":\\\"https://opensource.org/licenses/MIT\\\"}\"}}],[\"$\",\"$L2\",null,{\"children\":[[\"$\",\"$L3\",null,{}],[\"$\",\"main\",null,{\"className\":\"flex-1\",\"children\":[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}],[\"$\",\"$L6\",null,{}]]}],[\"$\",\"$L7\",null,{}]]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/28db660a76b123c2.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"div\",null,{\"className\":\"mx-auto max-w-6xl px-6 pt-24 pb-20 md:flex md:gap-10\",\"children\":[[\"$\",\"aside\",null,{\"className\":\"mb-8 md:mb-0 md:w-48 md:shrink-0\",\"children\":[\"$\",\"$L8\",null,{}]}],[\"$\",\"div\",null,{\"className\":\"min-w-0 flex-1\",\"children\":[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"article\",null,{\"children\":[[\"$\",\"header\",null,{\"children\":[[\"$\",\"div\",null,{\"className\":\"font-mono text-[10px] tracking-[0.22em] text-neon-blue-400 uppercase\",\"children\":\"Core Concepts\"}],[\"$\",\"h1\",null,{\"className\":\"mt-1 text-3xl font-semibold tracking-tight text-void-100\",\"children\":\"Code Mode\"}],[\"$\",\"p\",null,{\"className\":\"mt-4 max-w-2xl text-[15px] leading-relaxed text-void-400\",\"children\":\"Every project in SlyCode has two whole-screen modes. The Board | Code Mode toggle in the project header flips the kanban dashboard into the Codebase Atlas: a zoomable map of the codebase with AI-written explanations, backed by a real code editor, search, symbol index, git tools, and an embedded agent terminal.\"}]]}],\"$L9\",\"$La\",\"$Lb\",\"$Lc\",\"$Ld\",\"$Le\",\"$Lf\",\"$L10\",\"$L11\",\"$L12\",\"$L13\",\"$L14\",\"$L15\"]}],null,\"$L16\"]}],{}
1,null,false,false]},null,false,false]},null,false,false]},null,false,false],\"$L17\",false]],\"m\":\"$undefined\",\"G\":[\"$18\",[]],\"S\":true}\n"])</script>
1<script>self.__next_f.push([1,"22:I[97367,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/d2be314c3ece3fbe.js\"],\"OutletBoundary\"]\n23:\"$Sreact.suspense\"\n25:I[97367,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/d2be314c3ece3fbe.js\"],\"ViewportBoundary\"]\n27:I[97367,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/d2be314c3ece3fbe.js\"],\"MetadataBoundary\"]\n"])</script>
1<script>self.__next_f.push([1,"9:[\"$\",\"section\",null,{\"id\":\"why\",\"className\":\"mt-12 scroll-mt-20\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-xl font-semibold tracking-tight text-void-100\",\"children\":[\"$\",\"a\",null,{\"href\":\"#why\",\"className\":\"transition-colors duration-(--duration-fast) hover:text-neon-blue\",\"children\":\"Why Code Mode exists\"}]}],[\"$\",\"div\",null,{\"className\":\"mt-4 space-y-4 text-sm leading-relaxed text-void-300 [\u0026_a]:text-neon-blue [\u0026_a:hover]:underline [\u0026_code]:rounded [\u0026_code]:bg-void-800/80 [\u0026_code]:px-1.5 [\u0026_code]:py-0.5 [\u0026_code]:font-mono [\u0026_code]:text-[13px] [\u0026_code]:text-void-200 [\u0026_h3]:mt-8 [\u0026_h3]:text-base [\u0026_h3]:font-semibold [\u0026_h3]:text-void-100 [\u0026_li]:my-1.5 [\u0026_ol]:list-decimal [\u0026_ol]:pl-5 [\u0026_strong]:font-semibold [\u0026_strong]:text-void-100 [\u0026_ul]:list-disc [\u0026_ul]:pl-5\",\"children\":[[\"$\",\"p\",null,{\"children\":\"Months of agentic development disconnect you from your own code: structure, key files, and how components hang together fade. Code Mode answers \\\"what is this code and what changed\\\" at a glance and keeps you on top of a codebase you no longer write by hand, without opening an IDE.\"}],[\"$\",\"p\",null,{\"children\":[\"The layout: a collapsible left rail (files, symbols, search, git), a main canvas with breadcrumb navigation, a drag-resizable Atlas terminal docked on the right, and a bottom status strip with atlas stats and a refresh action. Appending \",[\"$\",\"code\",null,{\"children\":\"?view=code\"}],\" to a project URL deep-links straight into Code Mode. State survives switching modes: the open terminal and any delivered result deck are restored when you come back, and the Board button glows when board sessions are active.\"]}]]}]]}]\n"])</script>
1<script>self.__next_f.push([1,"a:[\"$\",\"section\",null,{\"id\":\"codebase-atlas\",\"className\":\"mt-12 scroll-mt-20\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-xl font-semibold tracking-tight text-void-100\",\"children\":[\"$\",\"a\",null,{\"href\":\"#codebase-atlas\",\"className\":\"transition-colors duration-(--duration-fast) hover:text-neon-blue\",\"children\":\"The Codebase Atlas\"}]}],[\"$\",\"div\",null,{\"className\":\"mt-4 space-y-4 text-sm leading-relaxed text-void-300 [\u0026_a]:text-neon-blue [\u0026_a:hover]:underline [\u0026_code]:rounded [\u0026_code]:bg-void-800/80 [\u0026_code]:px-1.5 [\u0026_code]:py-0.5 [\u0026_code]:font-mono [\u0026_code]:text-[13px] [\u0026_code]:text-void-200 [\u0026_h3]:mt-8 [\u0026_h3]:text-base [\u0026_h3]:font-semibold [\u0026_h3]:text-void-100 [\u0026_li]:my-1.5 [\u0026_ol]:list-decimal [\u0026_ol]:pl-5 [\u0026_strong]:font-semibold [\u0026_strong]:text-void-100 [\u0026_ul]:list-disc [\u0026_ul]:pl-5\",\"children\":[[\"$\",\"p\",null,{\"children\":\"The Atlas is an AI-maintained map of the project with four zoom levels, from whole-system down to a line of code. The landing view is always the map, never a file tree.\"}],[\"$\",\"div\",null,{\"className\":\"overflow-x-auto rounded-lg border border-void-700/50\",\"children\":[\"$\",\"table\",null,{\"className\":\"w-full min-w-[480px] border-collapse text-left text-sm\",\"children\":[[\"$\",\"thead\",null,{\"children\":[\"$\",\"tr\",null,{\"className\":\"border-b border-void-700/50 bg-void-900\",\"children\":[[\"$\",\"th\",\"Level\",{\"className\":\"px-4 py-2.5 font-mono text-[10px] font-medium tracking-[0.18em] text-void-500 uppercase\",\"children\":\"Level\"}],[\"$\",\"th\",\"What you see\",{\"className\":\"px-4 py-2.5 font-mono text-[10px] font-medium tracking-[0.18em] text-void-500 uppercase\",\"children\":\"What you see\"}]]}]}],[\"$\",\"tbody\",null,{\"children\":[[\"$\",\"tr\",\"0\",{\"className\":\"border-b border-void-800/40 last:border-b-0\",\"children\":[[\"$\",\"td\",\"0\",{\"className\":\"px-4 py-2.5 align-top leading-relaxed text-void-300 [\u0026_code]:rounded [\u0026_code]:bg-void-800/80 [\u0026_code]:px-1.5 [\u0026_code]:py-0.5 [\u0026_code]:font-mono [\u0026_code]:text-[12px] [\u0026_code]:text-void-200\",\"children\":[\"$\",\"strong\",\"l\",{\"children\":\"System map\"}]}],[\"$\",\"td\",\"1\",{\"className\":\"px-4 py-2.5 align-top leading-relaxed text-void-300 [\u0026_code]:rounded [\u0026_code]:bg-void-800/80 [\u0026_code]:px-1.5 [\u0026_code]:py-0.5 [\u0026_code]:font-mono [\u0026_code]:text-[12px] [\u0026_code]:text-void-200\",\"children\":\"One card per area, the top-level buildings of the codebase. Each card shows the area color, a five-pip churn meter (14-day git activity), and a freshness tag. First click opens a bottom drawer with the explanation and key files; second click zooms in.\"}]]}],[\"$\",\"tr\",\"1\",{\"className\":\"border-b border-void-800/40 last:border-b-0\",\"children\":[[\"$\",\"td\",\"0\",{\"className\":\"px-4 py-2.5 align-top leading-relaxed text-void-300 [\u0026_code]:rounded [\u0026_code]:bg-void-800/80 [\u0026_code]:px-1.5 [\u0026_code]:py-0.5 [\u0026_code]:font-mono [\u0026_code]:text-[12px] [\u0026_code]:text-void-200\",\"children\":[\"$\",\"strong\",\"l\",{\"children\":\"Area view\"}]}],[\"$\",\"td\",\"1\",{\"className\":\"px-4 py-2.5 align-top leading-relaxed text-void-300 [\u0026_code]:rounded [\u0026_code]:bg-void-800/80 [\u0026_code]:px-1.5 [\u0026_code]:py-0.5 [\u0026_code]:font-mono [\u0026_code]:text-[12px] [\u0026_code]:text-void-200\",\"children\":\"The area's modules as room cards, each with a name and summary. The drawer here also supports renaming the area and pinning it.\"}]]}],[\"$\",\"tr\",\"2\",{\"className\":\"border-b border-void-800/40 last:border-b-0\",\"children\":[[\"$\",\"td\",\"0\",{\"className\":\"px-4 py-2.5 align-top leading-relaxed text-void-300 [\u0026_code]:rounded [\u0026_code]:bg-void-800/80 [\u0026_code]:px-1.5 [\u0026_code]:py-0.5 [\u0026_code]:font-mono [\u0026_code]:text-[12px] [\u0026_code]:text-void-200\",\"children\":[\"$\",\"strong\",\"l\",{\"children\":\"File atlas\"}]}],[\"$\",\"td\",\"1\",{\"className\":\"px-4 py-2.5 align-top leading-relaxed text-void-300 [\u0026_code]:rounded [\u0026_code]:bg-void-800/80 [\u0026_code]:px-1.5 [\u0026_code]:py-0.5 [\u0026_code]:font-mono [\u0026_code]:text-[12px] [\u0026_code]:text-void-200\",\"children\":\"A file's functions, classes, and types as cards with AI one-liners, ordered by kind: classes and interfaces first, then functions, methods, and constants. Clicking a symbol opens the editor at that exact line.\"}]]}],\"$L19\"]}]]}]}],\"$L1a\"]}]]}]\n"])</script>
1<script>self.__next_f.push([1,"b:[\"$\",\"section\",null,{\"id\":\"two-layer-model\",\"className\":\"mt-12 scroll-mt-20\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-xl font-semibold tracking-tight text-void-100\",\"children\":[\"$\",\"a\",null,{\"href\":\"#two-layer-model\",\"className\":\"transition-colors duration-(--duration-fast) hover:text-neon-blue\",\"children\":\"The two-layer honesty model\"}]}],[\"$\",\"div\",null,{\"className\":\"mt-4 space-y-4 text-sm leading-relaxed text-void-300 [\u0026_a]:text-neon-blue [\u0026_a:hover]:underline [\u0026_code]:rounded [\u0026_code]:bg-void-800/80 [\u0026_code]:px-1.5 [\u0026_code]:py-0.5 [\u0026_code]:font-mono [\u0026_code]:text-[13px] [\u0026_code]:text-void-200 [\u0026_h3]:mt-8 [\u0026_h3]:text-base [\u0026_h3]:font-semibold [\u0026_h3]:text-void-100 [\u0026_li]:my-1.5 [\u0026_ol]:list-decimal [\u0026_ol]:pl-5 [\u0026_strong]:font-semibold [\u0026_strong]:text-void-100 [\u0026_ul]:list-disc [\u0026_ul]:pl-5\",\"children\":[[\"$\",\"p\",null,{\"children\":\"Code Mode separates what is always true from what an AI wrote, so you always know which one you are looking at.\"}],[\"$\",\"ul\",null,{\"children\":[[\"$\",\"li\",null,{\"children\":[[\"$\",\"strong\",null,{\"children\":\"The deterministic substrate\"}],\": file tree, Monaco editor, ripgrep full-text search, tree-sitter symbol index, and git status, diff, blame, and log. Instant, always available, always true.\"]}],[\"$\",\"li\",null,{\"children\":[[\"$\",\"strong\",null,{\"children\":\"The AI enrichment layer\"}],\": the area map, per-area explanations, module summaries, and per-symbol one-liners. Stored as schema-validated JSON artifacts inside the project (under\",\" \",[\"$\",\"code\",null,{\"children\":\"documentation/atlas/\"}],\", git-committed) and refreshed on a schedule.\"]}]]}],[\"$\",\"p\",null,{\"children\":\"Freshness is content-hash based. When a described file changes on disk, its area shows as stale on the map (an amber border) until the next refresh, and a drift banner offers a refresh. The AI layer can lag, but it is flagged when it does, and the substrate never lies.\"}]]}]]}]\n"])</script>
1<script>self.__next_f.push([1,"c:[\"$\",\"section\",null,{\"id\":\"editor\",\"className\":\"mt-12 scroll-mt-20\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-xl font-semibold tracking-tight text-void-100\",\"children\":[\"$\",\"a\",null,{\"href\":\"#editor\",\"className\":\"transition-colors duration-(--duration-fast) hover:text-neon-blue\",\"children\":\"The editor\"}]}],[\"$\",\"div\",null,{\"className\":\"mt-4 space-y-4 text-sm leading-relaxed text-void-300 [\u0026_a]:text-neon-blue [\u0026_a:hover]:underline [\u0026_code]:rounded [\u0026_code]:bg-void-800/80 [\u0026_code]:px-1.5 [\u0026_code]:py-0.5 [\u0026_code]:font-mono [\u0026_code]:text-[13px] [\u0026_code]:text-void-200 [\u0026_h3]:mt-8 [\u0026_h3]:text-base [\u0026_h3]:font-semibold [\u0026_h3]:text-void-100 [\u0026_li]:my-1.5 [\u0026_ol]:list-decimal [\u0026_ol]:pl-5 [\u0026_strong]:font-semibold [\u0026_strong]:text-void-100 [\u0026_ul]:list-disc [\u0026_ul]:pl-5\",\"children\":[[\"$\",\"ul\",null,{\"children\":[[\"$\",\"li\",null,{\"children\":[[\"$\",\"strong\",null,{\"children\":\"Monaco, self-hosted\"}],\": no CDN dependency, works offline, follows the SlyCode light and dark theme automatically.\"]}],[\"$\",\"li\",null,{\"children\":[[\"$\",\"strong\",null,{\"children\":\"Multi-file tabs\"}],\" with dirty tracking. Open files stay loaded as you move around the map, so unsaved changes survive navigation. Save via Ctrl/Cmd+S or the Save button; middle-click closes a tab.\"]}],[\"$\",\"li\",null,{\"children\":[[\"$\",\"strong\",null,{\"children\":\"Blame footer\"}],\": toggle on to see the commit hash, author, and date for the line under the cursor.\"]}],[\"$\",\"li\",null,{\"children\":[[\"$\",\"strong\",null,{\"children\":\"Any project file is editable\"}],\", dotfiles and\",\" \",[\"$\",\"code\",null,{\"children\":\".env\"}],\" included.\"]}]]}],[\"$\",\"aside\",null,{\"className\":\"rounded-lg border px-4 py-3 border-neon-blue-400/30 bg-neon-blue-400/5 text-void-300\",\"children\":[[\"$\",\"span\",null,{\"className\":\"mr-2 font-mono text-[10px] font-medium tracking-[0.18em] uppercase text-neon-blue-400\",\"children\":\"Note\"}],[\"$\",\"span\",null,{\"className\":\"text-sm leading-relaxed\",\"children\":\"The editor is deliberately an escape hatch, not an IDE: no language server, no debugger, no extensions.\"}]]}],[\"$\",\"p\",null,{\"children\":[[\"$\",\"strong\",null,{\"children\":\"Explain with Atlas\"}],\", a pinned toolbar action and a right-click menu entry, sends the current selection to the Atlas terminal for the agent to explain in context. With no selection it sends the word under the cursor with its line, or failing that the current line. When the agent highlights a range in return, the editor scrolls it into view, marks the lines, and shows the agent's note as a banner.\"]}]]}]]}]\n"])</script>
1<script>self.__next_f.push([1,"d:[\"$\",\"section\",null,{\"id\":\"search-and-symbols\",\"className\":\"mt-12 scroll-mt-20\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-xl font-semibold tracking-tight text-void-100\",\"children\":[\"$\",\"a\",null,{\"href\":\"#search-and-symbols\",\"className\":\"transition-colors duration-(--duration-fast) hover:text-neon-blue\",\"children\":\"Search and symbols\"}]}],[\"$\",\"div\",null,{\"className\":\"mt-4 space-y-4 text-sm leading-relaxed text-void-300 [\u0026_a]:text-neon-blue [\u0026_a:hover]:underline [\u0026_code]:rounded [\u0026_code]:bg-void-800/80 [\u0026_code]:px-1.5 [\u0026_code]:py-0.5 [\u0026_code]:font-mono [\u0026_code]:text-[13px] [\u0026_code]:text-void-200 [\u0026_h3]:mt-8 [\u0026_h3]:text-base [\u0026_h3]:font-semibold [\u0026_h3]:text-void-100 [\u0026_li]:my-1.5 [\u0026_ol]:list-decimal [\u0026_ol]:pl-5 [\u0026_strong]:font-semibold [\u0026_strong]:text-void-100 [\u0026_ul]:list-disc [\u0026_ul]:pl-5\",\"children\":[[\"$\",\"p\",null,{\"children\":\"The left rail has five tabs. The first three:\"}],[\"$\",\"ul\",null,{\"children\":[[\"$\",\"li\",null,{\"children\":[[\"$\",\"strong\",null,{\"children\":\"Files\"}],\": the project tree. Gitignored files like\",\" \",[\"$\",\"code\",null,{\"children\":\".env\"}],\" show dimmed with a \\\"gitignored (editable)\\\" tooltip, so config files stay reachable;\",\" \",[\"$\",\"code\",null,{\"children\":\"node_modules\"}],\" and build output stay hidden. The tree auto-expands to the active file while remembering your manual expand and collapse choices.\"]}],[\"$\",\"li\",null,{\"children\":[[\"$\",\"strong\",null,{\"children\":\"Symbols\"}],\": jump-to-symbol powered by a tree-sitter index. Deterministic, no language server. It covers TypeScript/TSX, JavaScript/JSX, Python, Bash, and Java, and extracts functions, classes, methods, interfaces, types, enums, and constants. The index builds incrementally in memory and searches as you type, with prefix matches ranked first.\"]}],[\"$\",\"li\",null,{\"children\":[[\"$\",\"strong\",null,{\"children\":\"Search\"}],\": full-text ripgrep search across the project, with results grouped by file, match highlighting, regex and case-sensitivity options, and a truncation note when results are capped.\"]}]]}]]}]]}]\n"])</script>
1<script>self.__next_f.push([1,"e:[\"$\",\"section\",null,{\"id\":\"git-tools\",\"className\":\"mt-12 scroll-mt-20\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-xl font-semibold tracking-tight text-void-100\",\"children\":[\"$\",\"a\",null,{\"href\":\"#git-tools\",\"className\":\"transition-colors duration-(--duration-fast) hover:text-neon-blue\",\"children\":\"Git tools\"}]}],[\"$\",\"div\",null,{\"className\":\"mt-4 space-y-4 text-sm leading-relaxed text-void-300 [\u0026_a]:text-neon-blue [\u0026_a:hover]:underline [\u0026_code]:rounded [\u0026_code]:bg-void-800/80 [\u0026_code]:px-1.5 [\u0026_code]:py-0.5 [\u0026_code]:font-mono [\u0026_code]:text-[13px] [\u0026_code]:text-void-200 [\u0026_h3]:mt-8 [\u0026_h3]:text-base [\u0026_h3]:font-semibold [\u0026_h3]:text-void-100 [\u0026_li]:my-1.5 [\u0026_ol]:list-decimal [\u0026_ol]:pl-5 [\u0026_strong]:font-semibold [\u0026_strong]:text-void-100 [\u0026_ul]:list-disc [\u0026_ul]:pl-5\",\"children\":[[\"$\",\"p\",null,{\"children\":[\"The fourth rail tab is \",[\"$\",\"strong\",null,{\"children\":\"Git\"}],\": live working-tree status grouped by staged, unstaged, and untracked files, a branch dropdown with switch and create-branch, and entries for a whole-tree diff and commit history. Two views render on the main canvas:\"]}],[\"$\",\"ul\",null,{\"children\":[[\"$\",\"li\",null,{\"children\":[[\"$\",\"strong\",null,{\"children\":\"Diff viewer\"}],\": whole-tree diffs as per-file collapsible cards with added and removed counts; single-file diffs render as one patch with an \\\"Open in editor\\\" shortcut. Any commit can be opened as its own diff view.\"]}],[\"$\",\"li\",null,{\"children\":[[\"$\",\"strong\",null,{\"children\":\"Log view\"}],\": commit history for the project or a single file (it follows renames). Clicking a commit opens its diff.\"]}]]}]]}]]}]\n"])</script>
1<script>self.__next_f.push([1,"f:[\"$\",\"section\",null,{\"id\":\"database\",\"className\":\"mt-12 scroll-mt-20\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-xl font-semibold tracking-tight text-void-100\",\"children\":[\"$\",\"a\",null,{\"href\":\"#database\",\"className\":\"transition-colors duration-(--duration-fast) hover:text-neon-blue\",\"children\":\"Database schema\"}]}],[\"$\",\"div\",null,{\"className\":\"mt-4 space-y-4 text-sm leading-relaxed text-void-300 [\u0026_a]:text-neon-blue [\u0026_a:hover]:underline [\u0026_code]:rounded [\u0026_code]:bg-void-800/80 [\u0026_code]:px-1.5 [\u0026_code]:py-0.5 [\u0026_code]:font-mono [\u0026_code]:text-[13px] [\u0026_code]:text-void-200 [\u0026_h3]:mt-8 [\u0026_h3]:text-base [\u0026_h3]:font-semibold [\u0026_h3]:text-void-100 [\u0026_li]:my-1.5 [\u0026_ol]:list-decimal [\u0026_ol]:pl-5 [\u0026_strong]:font-semibold [\u0026_strong]:text-void-100 [\u0026_ul]:list-disc [\u0026_ul]:pl-5\",\"children\":[[\"$\",\"p\",null,{\"children\":[\"The fifth rail tab is \",[\"$\",\"strong\",null,{\"children\":\"Database\"}],\". SlyCode discovers schema sources in the project (SQLite files, Prisma schemas, SQL DDL) and renders the tables as cards with primary and foreign key markers. Foreign-key chips jump to the related table and flash it, and a relations strip summarizes how tables connect. The Atlas can annotate tables with plain-prose descriptions; tables without annotations still render from the schema alone.\"]}],[\"$\",\"aside\",null,{\"className\":\"rounded-lg border px-4 py-3 border-neon-blue-400/30 bg-neon-blue-400/5 text-void-300\",\"children\":[[\"$\",\"span\",null,{\"className\":\"mr-2 font-mono text-[10px] font-medium tracking-[0.18em] uppercase text-neon-blue-400\",\"children\":\"Note\"}],[\"$\",\"span\",null,{\"className\":\"text-sm leading-relaxed\",\"children\":\"Introspection is read-only and works from files in your repo. There are no live database connections.\"}]]}]]}]]}]\n"])</script>
1<script>self.__next_f.push([1,"10:[\"$\",\"section\",null,{\"id\":\"digest-and-tours\",\"className\":\"mt-12 scroll-mt-20\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-xl font-semibold tracking-tight text-void-100\",\"children\":[\"$\",\"a\",null,{\"href\":\"#digest-and-tours\",\"className\":\"transition-colors duration-(--duration-fast) hover:text-neon-blue\",\"children\":\"Catch-up digest and guided tours\"}]}],[\"$\",\"div\",null,{\"className\":\"mt-4 space-y-4 text-sm leading-relaxed text-void-300 [\u0026_a]:text-neon-blue [\u0026_a:hover]:underline [\u0026_code]:rounded [\u0026_code]:bg-void-800/80 [\u0026_code]:px-1.5 [\u0026_code]:py-0.5 [\u0026_code]:font-mono [\u0026_code]:text-[13px] [\u0026_code]:text-void-200 [\u0026_h3]:mt-8 [\u0026_h3]:text-base [\u0026_h3]:font-semibold [\u0026_h3]:text-void-100 [\u0026_li]:my-1.5 [\u0026_ol]:list-decimal [\u0026_ol]:pl-5 [\u0026_strong]:font-semibold [\u0026_strong]:text-void-100 [\u0026_ul]:list-disc [\u0026_ul]:pl-5\",\"children\":[[\"$\",\"p\",null,{\"children\":\"Two Atlas drawer tabs keep you current with a codebase that changes while you are away.\"}],[\"$\",\"ul\",null,{\"children\":[[\"$\",\"li\",null,{\"children\":[[\"$\",\"strong\",null,{\"children\":\"Catch-up digest\"}],\": a nightly summary of what changed in each area since you last read it, ordered by how much unseen change each area carries, with clickable notable files. An unseen digest pulses a dot on its tab; marking it read advances the anchor so the next digest starts where you left off.\"]}],[\"$\",\"li\",null,{\"children\":[[\"$\",\"strong\",null,{\"children\":\"Guided tours\"}],\": step-by-step walkthroughs of the codebase in a docked player, with keyboard paging and a per-step jump that opens the editor at the relevant lines. Tours track the files they reference: when the code drifts, a stale banner appears, and one click regenerates the tour against the current code. An \\\"Ask about this step\\\" action escalates to the Atlas terminal, and a \\\"+ new tour\\\" card lets you request a tour from the UI.\"]}]]}],[\"$\",\"p\",null,{\"children\":[\"Across projects, the main dashboard has an \",[\"$\",\"strong\",null,{\"children\":\"Atlas\"}],\" \",\"tab that gathers every project's atlas summary in one grid, with click-through into each project's Code Mode.\"]}]]}]]}]\n"])</script>
1<script>self.__next_f.push([1,"11:[\"$\",\"section\",null,{\"id\":\"atlas-terminal\",\"className\":\"mt-12 scroll-mt-20\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-xl font-semibold tracking-tight text-void-100\",\"children\":[\"$\",\"a\",null,{\"href\":\"#atlas-terminal\",\"className\":\"transition-colors duration-(--duration-fast) hover:text-neon-blue\",\"children\":\"The Atlas terminal\"}]}],[\"$\",\"div\",null,{\"className\":\"mt-4 space-y-4 text-sm leading-relaxed text-void-300 [\u0026_a]:text-neon-blue [\u0026_a:hover]:underline [\u0026_code]:rounded [\u0026_code]:bg-void-800/80 [\u0026_code]:px-1.5 [\u0026_code]:py-0.5 [\u0026_code]:font-mono [\u0026_code]:text-[13px] [\u0026_code]:text-void-200 [\u0026_h3]:mt-8 [\u0026_h3]:text-base [\u0026_h3]:font-semibold [\u0026_h3]:text-void-100 [\u0026_li]:my-1.5 [\u0026_ol]:list-decimal [\u0026_ol]:pl-5 [\u0026_strong]:font-semibold [\u0026_strong]:text-void-100 [\u0026_ul]:list-disc [\u0026_ul]:pl-5\",\"children\":[[\"$\",\"p\",null,{\"children\":\"A live provider CLI session is docked to the right of the code. Each project gets its own dedicated atlas session, separate from board sessions. On startup the session is briefed as the Atlas terminal, loads the atlas skill, and follows a \\\"show, don't tell\\\" rule: when you ask to see, find, or locate something, the agent drives the view rather than replying with a list of paths.\"}],[\"$\",\"p\",null,{\"children\":\"The agent drives the view through three one-shot directives:\"}],[\"$\",\"div\",null,{\"className\":\"overflow-x-auto rounded-lg border border-void-700/50\",\"children\":[\"$\",\"table\",null,{\"className\":\"w-full min-w-[480px] border-collapse text-left text-sm\",\"children\":[[\"$\",\"thead\",null,{\"children\":[\"$\",\"tr\",null,{\"className\":\"border-b border-void-700/50 bg-void-900\",\"children\":[[\"$\",\"th\",\"Directive\",{\"className\":\"px-4 py-2.5 font-mono text-[10px] font-medium tracking-[0.18em] text-void-500 uppercase\",\"children\":\"Directive\"}],[\"$\",\"th\",\"What it does\",{\"className\":\"px-4 py-2.5 font-mono text-[10px] font-medium tracking-[0.18em] text-void-500 uppercase\",\"children\":\"What it does\"}]]}]}],[\"$\",\"tbody\",null,{\"children\":[[\"$\",\"tr\",\"0\",{\"className\":\"border-b border-void-800/40 last:border-b-0\",\"children\":[[\"$\",\"td\",\"0\",{\"className\":\"px-4 py-2.5 align-top leading-relaxed text-void-300 [\u0026_code]:rounded [\u0026_code]:bg-void-800/80 [\u0026_code]:px-1.5 [\u0026_code]:py-0.5 [\u0026_code]:font-mono [\u0026_code]:text-[12px] [\u0026_code]:text-void-200\",\"children\":[\"$\",\"code\",\"d\",{\"children\":\"navigate\"}]}],[\"$\",\"td\",\"1\",{\"className\":\"px-4 py-2.5 align-top leading-relaxed text-void-300 [\u0026_code]:rounded [\u0026_code]:bg-void-800/80 [\u0026_code]:px-1.5 [\u0026_code]:py-0.5 [\u0026_code]:font-mono [\u0026_code]:text-[12px] [\u0026_code]:text-void-200\",\"children\":\"Opens a file, optionally at a line, with an optional note shown as a toast.\"}]]}],[\"$\",\"tr\",\"1\",{\"className\":\"border-b border-void-800/40 last:border-b-0\",\"children\":[[\"$\",\"td\",\"0\",{\"className\":\"px-4 py-2.5 align-top leading-relaxed text-void-300 [\u0026_code]:rounded [\u0026_code]:bg-void-800/80 [\u0026_code]:px-1.5 [\u0026_code]:py-0.5 [\u0026_code]:font-mono [\u0026_code]:text-[12px] [\u0026_code]:text-void-200\",\"children\":[\"$\",\"code\",\"d\",{\"children\":\"highlight\"}]}],[\"$\",\"td\",\"1\",{\"className\":\"px-4 py-2.5 align-top leading-relaxed text-void-300 [\u0026_code]:rounded [\u0026_code]:bg-void-800/80 [\u0026_code]:px-1.5 [\u0026_code]:py-0.5 [\u0026_code]:font-mono [\u0026_code]:text-[12px] [\u0026_code]:text-void-200\",\"children\":\"Opens a file with a line range highlighted and a note banner explaining it.\"}]]}],[\"$\",\"tr\",\"2\",{\"className\":\"border-b border-void-800/40 last:border-b-0\",\"children\":[[\"$\",\"td\",\"0\",{\"className\":\"px-4 py-2.5 align-top leading-relaxed text-void-300 [\u0026_code]:rounded [\u0026_code]:bg-void-800/80 [\u0026_code]:px-1.5 [\u0026_code]:py-0.5 [\u0026_code]:font-mono [\u0026_code]:text-[12px] [\u0026_code]:text-void-200\",\"children\":[\"$\",\"code\",\"d\",{\"children\":\"deck\"}]}],[\"$\",\"td\",\"1\",{\"className\":\"px-4 py-2.5 align-top leading-relaxed text-void-300 [\u0026_code]:rounded [\u0026_code]:bg-void-800/80 [\u0026_code]:px-1.5 [\u0026_code]:py-0.5 [\u0026_code]:font-mono [\u0026_code]:text-[12px] [\u0026_code]:text-void-200\",\"children\":\"Delivers a titled list of up to 30 clickable file:line results, rendered as a docked result deck beside the code. It never floats over your co
1de.\"}]]}]]}]]}]}],\"$L1b\"]}]]}]\n"])</script>
1<script>self.__next_f.push([1,"12:[\"$\",\"section\",null,{\"id\":\"sly-atlas-cli\",\"className\":\"mt-12 scroll-mt-20\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-xl font-semibold tracking-tight text-void-100\",\"children\":[\"$\",\"a\",null,{\"href\":\"#sly-atlas-cli\",\"className\":\"transition-colors duration-(--duration-fast) hover:text-neon-blue\",\"children\":\"The sly-atlas CLI\"}]}],[\"$\",\"div\",null,{\"className\":\"mt-4 space-y-4 text-sm leading-relaxed text-void-300 [\u0026_a]:text-neon-blue [\u0026_a:hover]:underline [\u0026_code]:rounded [\u0026_code]:bg-void-800/80 [\u0026_code]:px-1.5 [\u0026_code]:py-0.5 [\u0026_code]:font-mono [\u0026_code]:text-[13px] [\u0026_code]:text-void-200 [\u0026_h3]:mt-8 [\u0026_h3]:text-base [\u0026_h3]:font-semibold [\u0026_h3]:text-void-100 [\u0026_li]:my-1.5 [\u0026_ol]:list-decimal [\u0026_ol]:pl-5 [\u0026_strong]:font-semibold [\u0026_strong]:text-void-100 [\u0026_ul]:list-disc [\u0026_ul]:pl-5\",\"children\":[[\"$\",\"p\",null,{\"children\":\"The CLI is the sole write path for atlas artifacts. Agents never edit the JSON directly: every write is validated against the schema, and a rejected write leaves the atlas untouched. A confused agent can produce a rejected write, never a corrupt atlas. Writes are atomic, rejections print exactly what to fix, and the CLI runs from anywhere inside the project.\"}],[\"$\",\"figure\",null,{\"className\":\"overflow-hidden rounded-lg border border-void-700/50 bg-void-900\",\"children\":[[\"$\",\"figcaption\",null,{\"className\":\"border-b border-void-800/60 px-4 py-2 font-mono text-[10px] tracking-[0.18em] text-void-500 uppercase\",\"children\":\"terminal\"}],[\"$\",\"pre\",null,{\"className\":\"overflow-x-auto px-4 py-3 font-mono text-[13px] leading-relaxed text-void-200\",\"children\":[\"$\",\"code\",null,{\"children\":\"sly-atlas status\"}]}]]}],[\"$\",\"div\",null,{\"className\":\"overflow-x-auto rounded-lg border border-void-700/50\",\"children\":[\"$\",\"table\",null,{\"className\":\"w-full min-w-[480px] border-collapse text-left text-sm\",\"children\":[[\"$\",\"thead\",null,{\"children\":[\"$\",\"tr\",null,{\"className\":\"border-b border-void-700/50 bg-void-900\",\"children\":[[\"$\",\"th\",\"Command\",{\"className\":\"px-4 py-2.5 font-mono text-[10px] font-medium tracking-[0.18em] text-void-500 uppercase\",\"children\":\"Command\"}],[\"$\",\"th\",\"What it does\",{\"className\":\"px-4 py-2.5 font-mono text-[10px] font-medium tracking-[0.18em] text-void-500 uppercase\",\"children\":\"What it does\"}]]}]}],[\"$\",\"tbody\",null,{\"children\":[[\"$\",\"tr\",\"0\",{\"className\":\"border-b border-void-800/40 last:border-b-0\",\"children\":[[\"$\",\"td\",\"0\",{\"className\":\"px-4 py-2.5 align-top leading-relaxed text-void-300 [\u0026_code]:rounded [\u0026_code]:bg-void-800/80 [\u0026_code]:px-1.5 [\u0026_code]:py-0.5 [\u0026_code]:font-mono [\u0026_code]:text-[12px] [\u0026_code]:text-void-200\",\"children\":[\"$\",\"code\",\"c\",{\"children\":\"sly-atlas init\"}]}],[\"$\",\"td\",\"1\",{\"className\":\"px-4 py-2.5 align-top leading-relaxed text-void-300 [\u0026_code]:rounded [\u0026_code]:bg-void-800/80 [\u0026_code]:px-1.5 [\u0026_code]:py-0.5 [\u0026_code]:font-mono [\u0026_code]:text-[12px] [\u0026_code]:text-void-200\",\"children\":\"Scaffolds the atlas directory and a default (disabled) refresh config.\"}]]}],[\"$\",\"tr\",\"1\",{\"className\":\"border-b border-void-800/40 last:border-b-0\",\"children\":[[\"$\",\"td\",\"0\",{\"className\":\"px-4 py-2.5 align-top leading-relaxed text-void-300 [\u0026_code]:rounded [\u0026_code]:bg-void-800/80 [\u0026_code]:px-1.5 [\u0026_code]:py-0.5 [\u0026_code]:font-mono [\u0026_code]:text-[12px] [\u0026_code]:text-void-200\",\"children\":[\"$\",\"code\",\"c\",{\"children\":\"sly-atlas status\"}]}],[\"$\",\"td\",\"1\",{\"className\":\"px-4 py-2.5 align-top leading-relaxed text-void-300 [\u0026_code]:rounded [\u0026_code]:bg-void-800/80 [\u0026_code]:px-1.5 [\u0026_code]:py-0.5 [\u0026_code]:font-mono [\u0026_code]:text-[12px] [\u0026_code]:text-void-200\",\"children\":\"The work list: per-area staleness (exactly which files changed) plus per-area coverage, ending with the thinnest area to enrich next. Supports --json.\"}]]}],\"$L1c\",\"$L1d\",\"$L1e\",\"$L1f\",\"$L20\"]}]]}]}],\"$L21\"]}]]}]\n"])</script>
1<script>self.__next_f.push([1,"13:[\"$\",\"section\",null,{\"id\":\"scheduled-refresh\",\"className\":\"mt-12 scroll-mt-20\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-xl font-semibold tracking-tight text-void-100\",\"children\":[\"$\",\"a\",null,{\"href\":\"#scheduled-refresh\",\"className\":\"transition-colors duration-(--duration-fast) hover:text-neon-blue\",\"children\":\"Scheduled refresh and coverage crawl\"}]}],[\"$\",\"div\",null,{\"className\":\"mt-4 space-y-4 text-sm leading-relaxed text-void-300 [\u0026_a]:text-neon-blue [\u0026_a:hover]:underline [\u0026_code]:rounded [\u0026_code]:bg-void-800/80 [\u0026_code]:px-1.5 [\u0026_code]:py-0.5 [\u0026_code]:font-mono [\u0026_code]:text-[13px] [\u0026_code]:text-void-200 [\u0026_h3]:mt-8 [\u0026_h3]:text-base [\u0026_h3]:font-semibold [\u0026_h3]:text-void-100 [\u0026_li]:my-1.5 [\u0026_ol]:list-decimal [\u0026_ol]:pl-5 [\u0026_strong]:font-semibold [\u0026_strong]:text-void-100 [\u0026_ul]:list-disc [\u0026_ul]:pl-5\",\"children\":[[\"$\",\"p\",null,{\"children\":\"The AI layer refreshes on a per-project nightly schedule, configured from a settings modal in Code Mode: an enabled toggle (refresh starts disabled until you turn it on), a cron schedule with a live human-readable preview (defaults to 3 AM), provider and model overrides, and a \\\"Run now\\\" button that kicks off a refresh immediately and opens the terminal.\"}],[\"$\",\"ul\",null,{\"children\":[[\"$\",\"li\",null,{\"children\":[[\"$\",\"strong\",null,{\"children\":\"Incremental by design\"}],\": the agent re-analyzes only the areas the status report marks stale, then re-checks area boundaries if the codebase shifted. A project with no atlas gets a first scan instead: explore, propose 4 to 8 meaningful areas, write a node per area.\"]}],[\"$\",\"li\",null,{\"children\":[[\"$\",\"strong\",null,{\"children\":\"Coverage crawl, every run\"}],\": freshness is not completeness. Even when nothing is stale, each run enriches the one or two thinnest areas with new module and symbol summaries and declares collections for bulk file families, so the atlas grows every run and converges on full coverage.\"]}],[\"$\",\"li\",null,{\"children\":[[\"$\",\"strong\",null,{\"children\":\"Product-owned scheduler\"}],\": not a user automation card. It uses the last run time as its re-fire guard and still fires if a scheduled window was missed within the past six hours.\"]}]]}]]}]]}]\n"])</script>
1<script>self.__next_f.push([1,"14:[\"$\",\"section\",null,{\"id\":\"what-stays-yours\",\"className\":\"mt-12 scroll-mt-20\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-xl font-semibold tracking-tight text-void-100\",\"children\":[\"$\",\"a\",null,{\"href\":\"#what-stays-yours\",\"className\":\"transition-colors duration-(--duration-fast) hover:text-neon-blue\",\"children\":\"What stays yours\"}]}],[\"$\",\"div\",null,{\"className\":\"mt-4 space-y-4 text-sm leading-relaxed text-void-300 [\u0026_a]:text-neon-blue [\u0026_a:hover]:underline [\u0026_code]:rounded [\u0026_code]:bg-void-800/80 [\u0026_code]:px-1.5 [\u0026_code]:py-0.5 [\u0026_code]:font-mono [\u0026_code]:text-[13px] [\u0026_code]:text-void-200 [\u0026_h3]:mt-8 [\u0026_h3]:text-base [\u0026_h3]:font-semibold [\u0026_h3]:text-void-100 [\u0026_li]:my-1.5 [\u0026_ol]:list-decimal [\u0026_ol]:pl-5 [\u0026_strong]:font-semibold [\u0026_strong]:text-void-100 [\u0026_ul]:list-disc [\u0026_ul]:pl-5\",\"children\":[\"$\",\"p\",null,{\"children\":\"The map is AI-maintained, but your corrections stick. Renaming an area pins it automatically, and pinned areas keep their identity across refreshes: a refresh must not rename or remove them. The visual side goes the other way: card colors are assigned deterministically by the product from a fixed palette, and layout is rendered by the product, never chosen by the AI. The agent provides structure and meaning; the product renders it.\"}]}]]}]\n15:[\"$\",\"section\",null,{\"id\":\"next-steps\",\"className\":\"mt-12 scroll-mt-20\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-xl font-semibold tracking-tight text-void-100\",\"children\":[\"$\",\"a\",null,{\"href\":\"#next-steps\",\"className\":\"transition-colors duration-(--duration-fast) hover:text-neon-blue\",\"children\":\"Next steps\"}]}],[\"$\",\"div\",null,{\"className\":\"mt-4 space-y-4 text-sm leading-relaxed text-void-300 [\u0026_a]:text-neon-blue [\u0026_a:hover]:underline [\u0026_code]:rounded [\u0026_code]:bg-void-800/80 [\u0026_code]:px-1.5 [\u0026_code]:py-0.5 [\u0026_code]:font-mono [\u0026_code]:text-[13px] [\u0026_code]:text-void-200 [\u0026_h3]:mt-8 [\u0026_h3]:text-base [\u0026_h3]:font-semibold [\u0026_h3]:text-void-100 [\u0026_li]:my-1.5 [\u0026_ol]:list-decimal [\u0026_ol]:pl-5 [\u0026_strong]:font-semibold [\u0026_strong]:text-void-100 [\u0026_ul]:list-disc [\u0026_ul]:pl-5\",\"children\":[\"$\",\"ul\",null,{\"children\":[[\"$\",\"li\",null,{\"children\":[[\"$\",\"a\",null,{\"href\":\"/docs/kanban\",\"children\":\"Kanban workflow\"}],\": the Board side of the toggle, where cards, stages, and agent sessions live.\"]}],[\"$\",\"li\",null,{\"children\":[[\"$\",\"a\",null,{\"href\":\"/docs/providers\",\"children\":\"Multi-provider setup\"}],\": choose which provider and model power the atlas session.\"]}]]}]}]]}]\n16:[\"$\",\"$L22\",null,{\"children\":[\"$\",\"$23\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@24\"}]}]\n17:[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L25\",null,{\"children\":\"$L26\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L27\",null,{\"children\":[\"$\",\"$23\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L28\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}]\n"])</script>
1<script>self.__next_f.push([1,"19:[\"$\",\"tr\",\"3\",{\"className\":\"border-b border-void-800/40 last:border-b-0\",\"children\":[[\"$\",\"td\",\"0\",{\"className\":\"px-4 py-2.5 align-top leading-relaxed text-void-300 [\u0026_code]:rounded [\u0026_code]:bg-void-800/80 [\u0026_code]:px-1.5 [\u0026_code]:py-0.5 [\u0026_code]:font-mono [\u0026_code]:text-[12px] [\u0026_code]:text-void-200\",\"children\":[\"$\",\"strong\",\"l\",{\"children\":\"Editor\"}]}],[\"$\",\"td\",\"1\",{\"className\":\"px-4 py-2.5 align-top leading-relaxed text-void-300 [\u0026_code]:rounded [\u0026_code]:bg-void-800/80 [\u0026_code]:px-1.5 [\u0026_code]:py-0.5 [\u0026_code]:font-mono [\u0026_code]:text-[12px] [\u0026_code]:text-void-200\",\"children\":\"Monaco, opened at the chosen symbol.\"}]]}]\n1a:[\"$\",\"p\",null,{\"children\":\"Trivial files with only a handful of symbols skip the file atlas and open directly in the editor. A clickable breadcrumb trail and back navigation cover the whole stack. A project with no atlas yet gets a first-scan empty state, and symbols missing a one-liner note that the coverage crawl fills them in over time.\"}]\n1b:[\"$\",\"p\",null,{\"children\":\"Directives are fire-and-forget. After delivery, the result deck and navigation are entirely yours; the agent is never in the interaction loop.\"}]\n1c:[\"$\",\"tr\",\"2\",{\"className\":\"border-b border-void-800/40 last:border-b-0\",\"children\":[[\"$\",\"td\",\"0\",{\"className\":\"px-4 py-2.5 align-top leading-relaxed text-void-300 [\u0026_code]:rounded [\u0026_code]:bg-void-800/80 [\u0026_code]:px-1.5 [\u0026_code]:py-0.5 [\u0026_code]:font-mono [\u0026_code]:text-[12px] [\u0026_code]:text-void-200\",\"children\":[\"$\",\"code\",\"c\",{\"children\":\"sly-atlas propose-areas\"}]}],[\"$\",\"td\",\"1\",{\"className\":\"px-4 py-2.5 align-top leading-relaxed text-void-300 [\u0026_code]:rounded [\u0026_code]:bg-void-800/80 [\u0026_code]:px-1.5 [\u0026_code]:py-0.5 [\u0026_code]:font-mono [\u0026_code]:text-[12px] [\u0026_code]:text-void-200\",\"children\":\"Writes or replaces the root map. Pinned areas must survive, and any colors the agent sends are stripped.\"}]]}]\n1d:[\"$\",\"tr\",\"3\",{\"className\":\"border-b border-void-800/40 last:border-b-0\",\"children\":[[\"$\",\"td\",\"0\",{\"className\":\"px-4 py-2.5 align-top leading-relaxed text-void-300 [\u0026_code]:rounded [\u0026_code]:bg-void-800/80 [\u0026_code]:px-1.5 [\u0026_code]:py-0.5 [\u0026_code]:font-mono [\u0026_code]:text-[12px] [\u0026_code]:text-void-200\",\"children\":[\"$\",\"code\",\"c\",{\"children\":\"sly-atlas write-node\"}]}],[\"$\",\"td\",\"1\",{\"className\":\"px-4 py-2.5 align-top leading-relaxed text-void-300 [\u0026_code]:rounded [\u0026_code]:bg-void-800/80 [\u0026_code]:px-1.5 [\u0026_code]:py-0.5 [\u0026_code]:font-mono [\u0026_code]:text-[12px] [\u0026_code]:text-void-200\",\"children\":\"Writes an area node. Every referenced path must exist on disk or the write is rejected, a guard against hallucinated paths. --merge enriches an existing node without dropping content.\"}]]}]\n1e:[\"$\",\"tr\",\"4\",{\"className\":\"border-b border-void-800/40 last:border-b-0\",\"children\":[[\"$\",\"td\",\"0\",{\"className\":\"px-4 py-2.5 align-top leading-relaxed text-void-300 [\u0026_code]:rounded [\u0026_code]:bg-void-800/80 [\u0026_code]:px-1.5 [\u0026_code]:py-0.5 [\u0026_code]:font-mono [\u0026_code]:text-[12px] [\u0026_code]:text-void-200\",\"children\":[\"$\",\"code\",\"c\",{\"children\":\"sly-atlas navigate / highlight / deck\"}]}],[\"$\",\"td\",\"1\",{\"className\":\"px-4 py-2.5 align-top leading-relaxed text-void-300 [\u0026_code]:rounded [\u0026_code]:bg-void-800/80 [\u0026_code]:px-1.5 [\u0026_code]:py-0.5 [\u0026_code]:font-mono [\u0026_code]:text-[12px] [\u0026_code]:text-void-200\",\"children\":\"Emit the one-shot view directives, validated before delivery.\"}]]}]\n1f:[\"$\",\"tr\",\"5\",{\"className\":\"border-b border-void-800/40 last:border-b-0\",\"children\":[[\"$\",\"td\",\"0\",{\"className\":\"px-4 py-2.5 align-top leading-relaxed text-void-300 [\u0026_code]:rounded [\u0026_code]:bg-void-800/80 [\u0026_code]:px-1.5 [\u0026_code]:py-0.5 [\u0026_code]:font-mono [\u0026_code]:text-[12px] [\u0026_code]:text-void-200\",\"children\":[\"$\",\"code\",\"c\",{\"children\":\"sly-atlas write-digest / write-tour / write-db\"}]}],[\"$\",\"td\",\"1\",{\"className\":\"px-4 py-2.5 align-top leading-relaxed text-void-300 [\u0026_code]:rounded [\u0026_code]:bg-void-800/80 [\u0026_code]:px-1.5 [\u0026_code]:py-0.5 [\u0026_code]:font-mono [\u0026_code]:text-[12px] [\u0026_code]:text-void-200\",\"children\":\"Write the cat
1ch-up digest, guided tours, and database annotations. Validated like every other artifact: referenced files must "])</script>
1<script>self.__next_f.push([1,"exist on disk.\"}]]}]\n20:[\"$\",\"tr\",\"6\",{\"className\":\"border-b border-void-800/40 last:border-b-0\",\"children\":[[\"$\",\"td\",\"0\",{\"className\":\"px-4 py-2.5 align-top leading-relaxed text-void-300 [\u0026_code]:rounded [\u0026_code]:bg-void-800/80 [\u0026_code]:px-1.5 [\u0026_code]:py-0.5 [\u0026_code]:font-mono [\u0026_code]:text-[12px] [\u0026_code]:text-void-200\",\"children\":[\"$\",\"code\",\"c\",{\"children\":\"sly-atlas context\"}]}],[\"$\",\"td\",\"1\",{\"className\":\"px-4 py-2.5 align-top leading-relaxed text-void-300 [\u0026_code]:rounded [\u0026_code]:bg-void-800/80 [\u0026_code]:px-1.5 [\u0026_code]:py-0.5 [\u0026_code]:font-mono [\u0026_code]:text-[12px] [\u0026_code]:text-void-200\",\"children\":\"Print a deterministic, budget-capped brief of an area from the atlas artifacts, for handing context to another agent.\"}]]}]\n21:[\"$\",\"p\",null,{\"children\":\"The artifacts themselves are small: a root map with a project overview, up to 16 areas, and up to 12 labeled flows between areas (the load-bearing relationships, not a full dependency graph); one node per area with its explanation, key files, modules, per-symbol one-liners, and content hashes of every file it describes; and declared collections, file families (specs, migrations, generated files) described once as a family rather than file by file. Schema limits cap counts and explanation length so the map stays legible.\"}]\n"])</script>
1<script>self.__next_f.push([1,"26:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script>
1<script>self.__next_f.push([1,"29:I[27201,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/d2be314c3ece3fbe.js\"],\"IconMark\"]\n24:null\n"])</script>
1<script>self.__next_f.push([1,"28:[[\"$\",\"title\",\"0\",{\"children\":\"Code Mode | SlyCode Docs\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Code Mode turns every project into a Codebase Atlas: a zoomable, AI-maintained map of your code backed by a real editor, search, symbol index, git tools, and an embedded agent terminal.\"}],[\"$\",\"link\",\"2\",{\"rel\":\"manifest\",\"href\":\"/manifest.json\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"3\",{\"rel\":\"canonical\",\"href\":\"https://slycode.ai/docs/code-mode\"}],[\"$\",\"meta\",\"4\",{\"property\":\"og:title\",\"content\":\"SlyCode | Workspace Manager for AI Coding Agents\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:description\",\"content\":\"Give each task its own workspace: terminal, context, and persistent session. Pick up any task exactly where you left off.\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:url\",\"content\":\"https://slycode.ai\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:site_name\",\"content\":\"SlyCode\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:image:alt\",\"content\":\"SlyCode: Workspace Manager for AI Coding Agents\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:image:type\",\"content\":\"image/png\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:image\",\"content\":\"https://slycode.ai/opengraph-image?4811d5f333e4c7cf\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"13\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"14\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"15\",{\"name\":\"twitter:creator\",\"content\":\"@slycode_ai\"}],[\"$\",\"meta\",\"16\",{\"name\":\"twitter:title\",\"content\":\"SlyCode | Workspace Manager for AI Coding Agents\"}],[\"$\",\"meta\",\"17\",{\"name\":\"twitter:description\",\"content\":\"Give each task its own workspace: terminal, context, and persistent session. Pick up any task exactly where you left off.\"}],[\"$\",\"meta\",\"18\",{\"name\":\"twitter:image:alt\",\"content\":\"SlyCode: Workspace Manager for AI Coding Agents\"}],[\"$\",\"meta\",\"19\",{\"name\":\"twitter:image:type\",\"content\":\"image/png\"}],[\"$\",\"meta\",\"20\",{\"name\":\"twitter:image\",\"content\":\"https://slycode.ai/opengraph-image?4811d5f333e4c7cf\"}],[\"$\",\"meta\",\"21\",{\"name\":\"twitter:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"22\",{\"name\":\"twitter:image:height\",\"content\":\"630\"}],[\"$\",\"link\",\"23\",{\"rel\":\"icon\",\"href\":\"/favicon.png\"}],[\"$\",\"link\",\"24\",{\"rel\":\"apple-touch-icon\",\"href\":\"/apple-touch-icon.png\"}],[\"$\",\"$L29\",\"25\",{}]]\n"])</script>
1</body></html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.