Atlas is a terminal-native AI coding agent used on Three.js scenes in 2026, where geometry, material, and texture disposal is the difference between a demo and a leak. You run atlas in a project whose package.json depends on three, and Atlas reads your scene graph setup, render loop, materials, and any GLSL you inline as shader strings before it proposes an edit you approve as a diff.
Why Three.js developers use Atlas
Three.js developers use Atlas in 2026 because a Three.js bug is usually about GPU memory or the frame budget, not about JavaScript syntax. Atlas indexes code by AST declarations using tree-sitter, not blind line windows, so your scene graph setup, render loop, and material definitions are retrieved as the declarations they are.
The failure modes in Three.js are quiet. A scene unmounts and its geometries, materials, and textures stay resident on the GPU, so memory climbs every time the user navigates. A render loop allocates a fresh Vector3 sixty times a second, so the garbage collector stutters the animation. Neither produces an error. Both are structural facts about where objects are created and where they are released, which is precisely what declaration-level indexing surfaces. Atlas can point at the code that creates GPU resources and the code that is supposed to release them, and tell you the two sets do not match.
Scene graph, render loop, and GLSL day to day
Day to day in 2026, Atlas reads your scene graph setup, render loop, materials, and any GLSL you inline as shader strings. Atlas searches code with hybrid semantic and keyword retrieval fused by reciprocal rank fusion, which is how a material and the shader string it carries surface from a single query.
Inline GLSL is the part most tools give up on, because a fragment shader written as a template literal is just a string to a JavaScript parser. Keyword retrieval still finds a uniform name inside it, which is often exactly what you are hunting: the uniform you added on the JS side and never wired into the shader, or the varying that no longer matches between vertex and fragment stages. Semantic retrieval finds the material that behaves like the one you are describing. Fusing both means a question about a custom ShaderMaterial returns the material, its uniforms, and the shader source together.
Adding a dispose path so unmounting stops leaking
Ask Atlas to add a dispose path for geometries, materials, and textures so unmounting a Three.js scene stops leaking GPU memory, then to reuse Vector3 instances instead of allocating inside the requestAnimationFrame loop. Atlas drafts a plan in a read-only plan agent and asks before switching to a build agent.
Disposal in Three.js is manual and the ownership is subtle. A geometry shared between two meshes must be disposed once, not twice. A texture used by three materials outlives all of them. A material cloned per instance needs a per instance dispose. Blind cleanup code that walks the scene and disposes everything it finds will happily free a resource another scene is still using. Because the plan agent is read-only, Atlas can trace which resources are created where and shared with what, list the ones that are genuinely owned by the scene being unmounted, and show you that list before writing the teardown.
Getting allocations out of requestAnimationFrame
Atlas moves per-frame object allocations out of the requestAnimationFrame loop into reusable Vector3 instances, which is the standard Three.js fix for garbage collection stutter. Every Atlas tool call is permission-gated against allow, ask, and deny rules before it runs, so nothing executes without your allow.
A render loop that constructs a new Vector3, Quaternion, or Matrix4 on every frame is generating garbage at frame rate, and the collector eventually pauses to clean it up, which the user sees as a hitch. The fix is to hoist those objects out of the loop and reuse them with copy and set, which is mechanically simple and semantically dangerous: a reused vector shared between two calculations will silently corrupt one of them. Atlas identifies the allocations inside the requestAnimationFrame callback and proposes the hoist per site, so you can see which instances are being shared before agreeing to it.
Testing and reviewing Three.js changes
Atlas runs vitest behind a permission prompt, then formats the diff with prettier. Atlas computes a unified diff for every file edit and surfaces it for approval before writing, so in 2026 a change to your Three.js render loop or dispose path is reviewed before it reaches the file.
Three.js logic is testable when it is separated from the renderer, and the parts worth testing are exactly the parts that break: does the dispose path release every geometry, material, and texture the scene created, and does the render loop stop allocating. Atlas writes vitest cases against the scene setup it indexed. Running them is a gated action and formatting is a separate one. Atlas snapshots file changes as git patches so edits can be diffed and rolled back, which matters when a disposal refactor touches several scenes at once.
Privacy and model choice for Three.js work
Atlas can build its code index with local Ollama embeddings, keeping code off third-party servers, which matters in 2026 for a Three.js product whose shader work is the differentiator. Atlas lets you switch the active model and provider on the fly with favorites and recents, so the model matches the task.
Indexing a Three.js project encodes the scene setup and the inlined GLSL, which for a graphics product is the intellectual property. Running that embedding step against a local Ollama model keeps it on your machine. Model choice then follows the work: a fast model to hoist a Vector3 out of the render loop or add a vitest case, a stronger one to reason about which geometries are shared across scenes and therefore must not be disposed on unmount. Favorites and recents make the switch a keystroke in the terminal.
Getting started
- 01Run atlas in a project whose package.json depends on three
- 02Let Atlas read your scene graph setup, render loop, materials, and any GLSL you inline as shader strings
- 03Ask Atlas to add a dispose path for geometries, materials, and textures so unmounting a scene stops leaking GPU memory
- 04Let Atlas move per-frame object allocations out of the requestAnimationFrame loop into reusable Vector3 instances
- 05Have Atlas run vitest behind a permission prompt, then prettier the diff
Frequently asked questions
- can an AI coding agent fix a Three.js memory leak?
- Yes. Ask Atlas to add a dispose path for geometries, materials, and textures so unmounting a scene stops leaking GPU memory. Atlas traces which resources the scene actually owns in a read-only plan agent before writing any teardown code.
- how do I set up Atlas on a Three.js project?
- Run atlas in a project whose package.json depends on three. Atlas reads your scene graph setup, render loop, materials, and any GLSL you inline as shader strings, then indexes them by AST declarations using tree-sitter.
- how do I stop per-frame allocations in a Three.js render loop?
- Let Atlas move per-frame object allocations out of the requestAnimationFrame loop into reusable Vector3 instances. Atlas proposes the hoist per call site so you can see which instances would be shared before you approve it.
- does Atlas understand inline GLSL shaders in Three.js?
- Atlas reads any GLSL you inline as shader strings, and hybrid semantic and keyword retrieval fused by reciprocal rank fusion means a uniform name inside a shader string is still findable from the JavaScript side that declares it.
- can Atlas run vitest on a Three.js project?
- Yes. Atlas runs vitest behind a permission prompt, then formats the diff with prettier. Every tool call is permission-gated against allow, ask, and deny rules before it runs.
- is it safe to let an AI agent refactor a Three.js scene?
- Atlas computes a unified diff for every file edit and surfaces it for approval before writing, and it snapshots file changes as git patches so a disposal refactor touching several scenes can be rolled back in one action.
- can Atlas index Three.js shader code privately?
- Yes. Atlas can build its code index with local Ollama embeddings, keeping code off third-party servers, so your scene setup and inlined GLSL stay on your own hardware.
Try Atlas in your terminal
The terminal-native AI coding agent. Free core, single binary.
Install AtlasRelated guides
Run the Three.js Test Suite and Triage Failures with Atlas in 2026
For Three.js developers in 2026, Atlas transforms overwhelming vitest output into a prioritized list of distinct root causes, streamlining debugging and ensuring robust scenes.
Extract a Shared Helper from Duplicated Code in Three.js with Atlas in 2026
Refactor your Three.js codebase in 2026 by extracting duplicated logic into a single, tested helper using Atlas. Prevent GPU memory leaks and improve performance.
Diagnose a hanging or long-running command in Three.js with Atlas in 2026
In 2026, use Atlas to diagnose why your Three.js `npm` or `vitest` commands are hanging or running slowly. Identify if a process is genuinely slow or silently blocked on interactive input, and get it unstuck with
Rename a symbol across the repo in Three.js with Atlas in 2026
Refactor Three.js code with Atlas in 2026. Rename functions, classes, or constants across your entire repository, ensuring all references are updated, including those missed by `grep` alone. Atlas uses `lsp`, `grep`
Refactor a legacy Three.js module with Atlas in 2026
Safely refactor legacy Three.js modules in 2026 with Atlas. Map callsites, pin behavior with vitest, apply changes with apply_patch, and ensure no regressions.
Trace a runtime bug from a stack trace in Three.js with Atlas in 2026
Pinpoint Three.js runtime bugs from production stack traces using Atlas in 2026. Go from a file:line error to a fix and regression test, all without attaching a debugger.
Onboard to an Unfamiliar Three.js Codebase with Atlas in 2026
Quickly build a mental model of any Three.js repository in 2026 using Atlas. Leverage semantic search, file globbing, and read-only exploration to understand scene graphs, materials, and render loops without reading
Locate Three.js Behavior Implementations with Atlas in 2026
Discover how Atlas helps Three.js developers in 2026 pinpoint exact file and symbol locations for behaviors, leveraging semantic search, grep, and LSP tools.