Launch HN: Nia (YC S25) – Give better context to coding agents (trynia.ai)

131 points by jellyotsiro ↗ HN
Hi HN, I am Arlan and I am building Nia (https://trynia.ai), a context layer for AI coding agents. Nia lets tools like Cursor, Claude Code, and other MCP clients index and query real codebases and documentation so they stop hallucinating against outdated or wrong sources, with applications beyond coding agents to any AI system that requires grounded context across domains.

Coding agents are only as good as the context you give them. General models are trained on public code and documentation that is often old, and they usually have no idea what is inside your actual repo, internal wiki, or the exact version of a third party SDK you use. The result is very familiar: you paste URLs and code snippets into the prompt, the agent confidently uses an outdated API or the wrong framework version, and you spend more time verifying and correcting it than if you had written the code yourself. Once models are good enough at generating code, feeding them precise, up-to-date context becomes the bottleneck.

I ran into this pattern first on my own projects when (a few months ago) I was still in high school in Kazakhstan, obsessed with codegen tools and trying every coding agent I could find. I saw it again when I got into YC and talked to other teams who were also trying to use agents on real work.

The first version of Nia was basically “my personal MCP server that knows my repos and favorite doc sites so I do not have to paste URLs into Cursor anymore.” Once I saw how much smoother my own workflow became, it felt obvious that this should be a product other people could use too.

Under the hood, Nia is an indexing and retrieval service with an MCP interface and an API. You point it at sources like GitHub repositories, framework or provider docs, SDK pages, PDF manuals, etc. We fetch and parse those with some simple heuristics for code structures, headings, and tables, then normalize them into chunks and build several indexes: a semantic index with embeddings for natural language queries; a symbol and usage index for functions, classes, types, and endpoints; a basic reference graph between files, symbols, and external docs; regex and file tree search for cases where you want deterministic matches over raw text.

When an agent calls Nia, it sends a natural language query plus optional hints like the current file path, stack trace, or repository. Nia runs a mix of BM25 style search, embedding similarity, and graph walks to rank relevant snippets, and can also return precise locations like “this function definition in this file and the three places it is used” instead of just a fuzzy paragraph. The calling agent then decides how to use those snippets in its own prompt. One Nia deployment can serve multiple agents and multiple projects at once. For example, you can have Cursor, Claude Code, and a browser based agent all pointed at the same Nia instance that knows about your monorepo, your internal wiki, and the provider docs you care about. We keep an agent agnostic session record that tracks which sources were used and which snippets the user accepted. Any MCP client can attach to that session id, fetch the current context, and extend it, so switching tools does not mean losing what has already been discovered.

A lot of work goes into keeping indexes fresh without reprocessing everything. Background workers periodically refetch configured sources, detect which files or pages changed, and reindex those incrementally. This matters because many of the worst “hallucinations” I have seen are actually the model quoting valid documentation for the wrong version. Fixing that is more about version and change tracking than about model quality.

We ship Nia with a growing set of pre-indexed public sources. Today this includes around 6k packages from common frameworks and provider docs, plus package search over thousands of libraries from ecosystems like PyPI, npm, and RubyGems, as well as pre indexed /explore page where everyone can contribute their source...

28 comments

[ 2.9 ms ] story [ 58.0 ms ] thread
Having this RAG layer was always another thing to try for me. I haven't coded it myself, and super interested if this gives a real boost while working with Claude. Curious from anyone who have already tried the service, what's your feedback? Did you feel you're getting real improvements?
Absolutely insane that we celebrated coding agents getting rid of RAG, only with the next innovation being RAG
The context problem with coding agents is real. We've been coordinating multiple agents on builds - they often re-scan the same files or miss cross-file dependencies. Interested in how Nia handles this - knowledge graph or smarter caching?
This looks neat, we certainly need more ideas and solutions on this space, I work with large codebases daily and the limits on agentic contexts are constantly evident. I've some questions related to how I would consume a tool like this one:

How does this fare with codebases that change very frequently? I presume background agents re-indexing changes must become a bottleneck at some point for large or very active teams.

If I'm working on a large set of changes modifying lots of files, moving definitions around, etc., meaning I've deviated locally quite a bit from the most up to date index, will Nia be able to reconcile what I'm trying to do locally vs the index, despite my local changes looking quite different from the upstream?

Cursor promises to do this[0] in the product, so, especially on HN, it'd be best to start with "why this is better than Cursor".

> favorite doc sites so I do not have to paste URLs into Cursor

This is especially confusing, because cursor has a feature for docs you want to scrape regularly.

0 - https://cursor.com/docs/context/codebase-indexing

I've no idea what their architecture/implementation looks like, but I've built a similar tool for my own use and the improvements are dramatic to say the least.

Mine's a simple BM25 index for code keyword search (I use it alongside serena-mcp) and for some use cases the speeds and token efficiency are insane.

https://gitlab.com/rhobimd-oss/shebe#comparison-shebe-vs-alt...

Congrats on the launch. The problem is definitely there. I wonder how are you planning to differentiate yourself from Cursor and the like. You mention you are complementary, but Cursor provide similar features to add external doc context for instance to a prompt. I understand you do better in your benchmark, but with the amount of funding they may be able to replicate and improve over it (unless you have a secret thing).
Is the RAG database on your servers or is it local? If not local is there a local option?
This looks interesting and worthwhile. I did a double-take when I read "when (a few months ago) I was still in high school in Kazakhstan"
This resonates. I'm building a React Native app and the biggest friction with AI coding tools is re-explaining context every time.

How does Nia handle project-specific patterns? Like if I always use a certain folder structure or naming convention, does it learn that?

Configure MCP Server One command to set up Nia MCP Server for your coding agent.

Select your coding agentCursor Installation method Local Remote Runs locally on your machine. More stable. Requires Python & pipx.

Create API Key test Create Organization required to create API keys

i can not create api key? the create button is grey and can not be pressed.

Very happy to see this since I am building in this domain. We need external and internal context though. I am aiming for always available context for current and related projects, reference projects, documentation, library usage, commands available (npm, python,...), tasks, past prompts, etc. all in one product. My product, nocodo (1), is built by coding agents, Claude Code (Sonnet only) and opencode (Grok Code Fast 1 and GLM 4.6).

I just made a video (2) on how I prompt with Claude Code, ask for research from related projects, build context with multiple documents, then converge into a task document, shared that with another coding agent, opencode (with Grok or GLM) and then review with Claude Code.

nocodo is itself a challenge for me: I do not write or review code line by line. I spend most of the time in this higher level context gathering, planning etc. All these techniques will be integrated and available inside nocodo. I do not use MCPs, and nocodo does not have MCPs.

I do not think plugging into existing coding agents work, not how I am building. I think building full-stack is the way, from prompt to deployed software. Consumers will step away from anything other than planning. The coding agent will be more a planning tool. Everything else will slowly vanish.

Cheers to more folks building here!

1. https://github.com/brainless/nocodo 2. https://youtu.be/Hw4IIAvRTlY

So many coding tools what makes you different.
Is this similar to the indexing done by Jetbrains IDEs?
> The calling agent then decides how to use those snippets in its own prompt.

To be reductionist, it seems the claimed product value is "better RAG for code."

The difficulties with RAG are at least:

1. Chunking: how large and how is the beginning/end of a chunk determined

2. Given the above quote, how much or many RAG results are put into the context? It seems that the API caller makes this decision, but how?

I'm curious about your approach and how you evaluated it.

Your landing page tells me a whole lot of nothing.

How does this work? How does it differ from other solutions? Why do I need this? What does the implementation look like if I added this to my codebase?

Can you explain why I would pay almost the full price of Cursor, ChatGPT, or Claude again - just for your context layer, when these companies are already working on context?

I don't see you justify this with an explanation of the ROI anywhere.

Just like with tool calling, I find models that are post-trained to work with a context system use it more reliably. I don't think bolting on a context system is ever going to work as well.
Looks cool, it is always a good take to make agent to retrieve information well- writing docs every time can always go bad.
thanks! yes writing docs is pain the ass haha