Graphicle: Rewriting Graphify in Rust to Give Coding Agents a Memory

Graphicle rewrites Graphify in Rust, layering retrievable long-term memory onto the code graph for coding agents.
Graphicle is a new project gaining attention on Hacker News, positioned as a Rust rewrite of Graphify whose core addition is memory for coding agents. Graphify organizes a codebase into a graph structure, turning files, functions, dependencies, and call chains into queryable nodes and edges—a precondition for agents to understand code. Graphicle chooses Rust to inherit the original graph model and query semantics while improving runtime performance and distribution. Its key design anchors memory to code graph nodes rather than flat text summaries, letting agents retrieve historical decisions tied to specific functions and dependencies. The article also analyzes the Rust port's trade-offs in cross-language interoperability, concurrent mutable graphs, and error handling, and notes that the primary users of code graph tools are shifting from humans to AI agents.
On Hacker News' Show HN section, a new project called Graphicle has caught the attention of quite a few developers. Its positioning is straightforward: rewrite Graphify in Rust, and on top of that add a layer of "memory" for coding agents.

Why Graphify, and Why Rust
The original intent behind tools like Graphify is to organize a codebase as a graph structure—files, functions, dependencies, and call chains all become queryable nodes and edges. For human developers, this is an aid to understanding large projects; for coding agents, it is almost a precondition for "understanding the codebase."
Rust here is not about chasing a language trend. Building, traversing, and incrementally updating graph structures is inherently a high-concurrency, memory-management-heavy scenario. Rust's constraints around memory layout and ownership let this kind of tool achieve near-system-level execution efficiency while keeping resource usage low. For an agent backend component that gets called repeatedly, startup speed and resident overhead often matter more than absolute peak performance.
Graphicle choosing to do a Rust port rather than design from scratch means it tries to inherit the graph model and query semantics that Graphify already established, while filling in runtime performance and distribution convenience.
Code Graph is the foundational concept for understanding this article. Traditional code retrieval relies on text matching or regex, and can only answer "where does a certain string appear"; a code graph abstracts the codebase into typed nodes (files, classes, functions, variables) and semantic edges (imports, calls, inheritance, references). This structure upgrades queries from "finding text" to "finding relationships"—for example, "which functions indirectly call this deprecated API" or "which downstream modules are affected if I change this interface." Code graphs are typically built during the indexing phase by static analysis or the Language Server Protocol (LSP), and can be persisted as a graph database or an in-memory adjacency structure. For a coding agent, a code graph is essentially a programmatically queryable "code map," allowing it to locate relevant code snippets without stuffing the entire repository into context. Graphify was an early practitioner of this idea, and Graphicle extends the model in terms of language and capabilities.
What "Memory" Means for Coding Agents
This is the more interesting part of Graphicle compared to ordinary code graph tools. Most coding agents today have limited context windows, and across long sessions or multiple tasks, earlier key conclusions get pushed out of context—it "did" something, but doesn't "remember" why it did it.
Hanging memory on the code graph is a pragmatic choice. The carrier of memory is no longer flat natural-language summaries, but is anchored to specific nodes: why a function was refactored, why a dependency was replaced, what known pitfalls exist in a piece of logic. When the agent touches the same area again, what it retrieves are the historical decisions associated with that node, rather than a fuzzy semantic search across the whole repository.
The implicit premise of this design is that the semantics of code are not just the current text, but also the history and reasoning behind its modifications. Graph structures are naturally suited to carrying this kind of location-bound information.
Context Window refers to the upper limit of tokens a model can hold in a single inference, and it is key to understanding the agent "amnesia" problem. Mainstream model windows range from tens of thousands to hundreds of thousands of tokens, but even with a very large window, early information in long sessions remains hard to use effectively due to the "lost in the middle" phenomenon, and token cost rises linearly with length. As a result, agent engineering widely adopts external memory schemes: writing historical decisions, task states, and observations into vector stores, key-value stores, or structured databases, and retrieving them back into context by relevance when needed. Such schemes are usually called RAG (Retrieval-Augmented Generation). Graphicle's differentiation is that the retrieval unit is not a free-text chunk but a node on the code graph, tightly binding memory to code location and avoiding the mismatch problem of pure semantic retrieval where "similar text is found but it doesn't correspond to a specific function."
The Real Trade-offs of a Rust Port
Cross-language rewrites are rarely pure translations. The dynamic-typing conveniences and library ecosystem dependencies of Graphify's original implementation all need to be re-established in Rust. Common trade-offs include:
- Serialization and interoperability: The agent ecosystem is mostly Python and TypeScript, so the Rust side usually needs to expose a C ABI, WASM, or local RPC interface, which introduces a non-negligible layer of integration cost.
- Incremental indexing: Rust's ownership model complicates "shared mutable graphs," and common solutions involve introducing specialized concurrent data structures or adopting phased rebuilds, requiring a balance between performance and implementation complexity.
- Error-handling philosophy: Moving from exception-style to Result-style changes how upper-layer callers handle failure paths, which in agent scenarios is actually more conducive to explicitly handling states like "incomplete index."
These details determine whether Graphicle is "faster but harder to integrate" or "faster and more stable," and they are also the points the community is most likely to press on in the comments.
C ABI, WASM, and local RPC are three common paths for wiring Rust components into the Python/TypeScript agent ecosystem, each with its own costs. C ABI exposes functions via #[no_mangle] extern "C", paired with ctypes, cffi, or Node's FFI calls, achieving near-native performance, but requiring manual memory and error-code management, with cross-language type mapping prone to errors. WASM compiles Rust into portable bytecode that runs sandboxed in browsers and Node, offering good security and simple distribution, but limited by the linear memory model, it struggles to directly access the filesystem, and I/O-intensive indexing tasks need to route through host interfaces. Local RPC (such as gRPC or JSON-RPC over Unix socket) turns the Rust process into a resident service, language-agnostic and easy to debug, at the cost of serialization overhead and inter-process communication latency. For an agent backend that needs to be called repeatedly, a resident service plus a lightweight protocol is often the balanced choice.
These Tools Are Being Repositioned
Code graph tools were once seen as IDE plugins or static analyzers, serving humans. The emergence of Graphicle continues an obvious trend: the "first user" of this kind of infrastructure is becoming AI agents. This brings a shift in evaluation criteria—
Humans care about whether visualization is clear and navigation is smooth; agents care about query latency, result determinism, and whether they can be called programmatically. For an agent-facing graph backend, the importance of API design, deduplication strategy, and memory eviction mechanisms is no less than the accuracy of the graph itself.
If Graphicle can reliably turn "graph + memory" into a low-overhead resident service, what it fills is not just a gap in language porting, but a piece of the puzzle in coding agents' relatively weak long-term memory. Of course, whether this judgment holds still depends on whether it can prove in real agent loops that memory retrieval actually improves task success rates, rather than merely increasing context length.
Memory Eviction is a key design consideration for whether a long-term memory system can run stably. Memory cannot grow indefinitely; you must decide when to write and when to forget. Common strategies include: time-based TTL expiration, access-frequency-based LRU eviction, importance-based scoring (such as whether it led to task success), and conflict-detection-based merging or overwriting. In code graph scenarios, eviction also needs to account for code evolution—when a function is deleted or rewritten, whether the historical decisions anchored to it remain valid is a question of keeping them as "archaeological records" or marking them invalid. The choice of strategy directly affects retrieval signal-to-noise ratio: too aggressive loses key decisions, too conservative lets noise drown out the signal. For agent-facing memory systems, the eviction logic often determines the actual experience more than the graph construction algorithm itself.
One-line Summary
Graphicle rewrites Graphify in Rust and layers retrievable long-term memory over the code graph for coding agents.
Paragraph Summary
Graphicle is a new project gaining attention on Hacker News, positioned as a Rust rewrite of Graphify whose core addition is memory capability for coding agents. Graphify organizes a codebase into a graph structure, turning files, functions, dependencies, and call chains into queryable nodes and edges—a precondition for an agent to "understand the codebase." Graphicle chooses Rust rather than designing from scratch, aiming to inherit the original graph model and query semantics while filling in runtime performance and distribution convenience. Its most-noticed design is anchoring memory to code graph nodes rather than flat text summaries, letting agents retrieve historical decisions related to specific functions and dependencies. The article also analyzes the real trade-offs of a Rust port in cross-language interoperability, concurrent mutable graphs, and error-handling models, and notes that the primary users of code graph tools are shifting from humans to AI agents, with evaluation criteria shifting accordingly.
Related articles

Workbuddy for Absolute Beginners: How a Desktop AI Agent Fits Into Real Workflows
A beginner's guide to the Workbuddy desktop AI agent: installation, claiming credits, file management, and building automated workflows—compared with CodeX for fit and cost, helping professionals shift from AI question-askers to AI managers.

OpenAI's New Agent Stack: Computer Use, Decisions API, and Ultra-Fast Workflows
OpenAI Dev Day unveiled a new agent stack: Computer Use outperforms humans, Decisions API delivers ultra-low-latency classification via Luna, Agents API opens the same Computer Use capabilities, and GPT-6.1 Sol costs only one-seventh of Astra. Core updates, benchmark data, and developer insights.

Liang Wenfeng Open-Sources DeepInfo Inference Framework, Takes On U.S. Ban
DeepSeek open-sources its DeepInfo inference framework after its models, featuring GPU/CPU cross-pipelining, small-model prediction with large-model verification, and full Huawei Ascend and NVIDIA chip support—facing the U.S. federal ban head-on. This article analyzes its significance for AI deployment and open-source strategy.