About this newsletter
This is the XGEN and AI newsletter published fortnightly by Plateer AI Labs. The issue that goes out by email is readable here on the web, as it is.
Shipped this fortnight
Attach an API, and it becomes knowledge.
The path for attaching an external API to a knowledge collection is open. These finished development over the past two weeks and reached verification or beyond, and each item carries a badge for how far it went (stage, production). What is in development follows, along with technology news, reading, and papers.
API data sources — automatic collection indexing
External API responses are indexed into a knowledge collection automatically. Pick an API you registered as a tool, confirm the response with a connection test, set how often to fetch, and that is it. The interval runs from manual execution through 5 minutes, 30 minutes, 1 hour, 6 hours, and 24 hours.
Fetched responses become Markdown documents and go through exactly the same security and indexing path as a document upload. Rather than reloading everything each time, only what is new is added. APIs that need authentication get a separate credential profile so tokens do not mix with collection settings, and APIs with a repeating parameter are called several times from a list of values. XML responses are converted and received as well as JSON.
Upload version control and conflict review
When you upload a file under a name that already exists, you choose what happens. Overwriting does not make the previous file disappear — versions stack up, and [Version history] on each file shows past versions alongside the original hash.
Uploading a whole folder shows the conflict on each file inside first, to be resolved file by file or all at once. The options are unified into three — overwrite, skip, rename — and the server makes the call. We also fixed a cancelled upload appearing as 'complete', and skipped files being uploaded anyway.
Model serving — observability and multi-model GPU loading
vLLM engine metrics are exported to Prometheus and connected to dashboards and alerts. Which model is taking how many requests, and where the queue is backing up, is visible straight from the operations screen.
Loading is now permitted against free GPU memory, so several models can go onto a single GPU together, and the administrator status screen refreshes live without a reload button. The llama.cpp build was fixed so it is not tied to one machine, and supports up to the Blackwell generation.
Stability fixes
A document that exceeds the embedding input limit now retries with an automatically reduced chunk size. There is less of a person hunting down a failed document to upload it again. An error that killed the entire upload was stopped by hotfix.
We fixed a gateway path returning 502 because five perfectly healthy modules were missing from the whitelist, and a proxy problem that resurrected # and ? in filenames as URL delimiters. A 403 on remote access from notebook sessions, and an empty chat list that made it impossible to start a conversation in a newly created trial zone, were resolved as well.
Also in this issue
- Execution history for a shared workflow now records both who ran it and whose it is
- Agent lists and failure logs download as Excel from the administrator screen
- The administrator SQL console accepts the full query syntax. Only deletion and privilege statements are blocked
- DeepSeek can be registered as an LLM provider
Numbers
The fortnight in numbers
293
Merge requests landed
10
Modules touched
52
On verification and production
Based on merge requests merged since 27 July (customer-only branches excluded). Of those, 52 reached the stage and main lines.
See all release notesScreens
A look at this issue
Screens that words alone do not do justice. This is what the items above actually look like.
![[Upload > API] Pick an external API you registered as a tool, press the connection test, and you see the real response right there. The Bank of Korea exchange rate API is returning the KRW/USD base rate. (development environment)](/_next/image?url=%2Fnewsletter%2Fvol-3%2Fxgen-api-preview.jpg&w=3840&q=75)
![[Step 3 · Sync settings] Choose how often to fetch. From manual execution through 5 minutes, 30 minutes, 1 hour, 6 hours, and 24 hours. Fetched data goes through the same security and indexing path as a document upload. (development environment)](/_next/image?url=%2Fnewsletter%2Fvol-3%2Fxgen-api-sync.jpg&w=3840&q=75)

![[Knowledge management > Collections > Upload history] One upload, expanded. The original hash (SHA-256) tells whether it is the same file, and the chunking result and storage encryption are kept in one place. (development environment)](/_next/image?url=%2Fnewsletter%2Fvol-3%2Fxgen-upload-detail.jpg&w=3840&q=75)
![[Admin settings > Environment > Infrastructure] A speech recognition model and an LLM are loaded together on a single GPU (120GB). 'Live connection' at the top right means the state refreshes without a reload. (development environment)](/_next/image?url=%2Fnewsletter%2Fvol-3%2Fxgen-model-serving.jpg&w=3840&q=75)
In progress
In development and research
What we are building or experimenting with right now. If any of it interests you, let's talk any time.
XGeny — the tools an agent makes now persist
60%We are making the tools an agent builds mid-task usable in the next session too. The tool specification and its runtime live in the database, so they do not disappear when the pod restarts, and the pinned dependency versions are written into the spec. Code execution moved to a separate runner, away from the workflow core, and the [Tools] view shows the actual code and a three-stage status with a test you can run right there. What we called Geny through the last issue becomes XGeny (internal identifiers are unchanged).
Audio file transcription
85%We are building the path where a meeting recording uploaded straight into a knowledge collection is transcribed and then indexed. The speech-to-text workflow node, the live transcription receive and output nodes, and the error codes that separate the causes of failure all reached verification. Uploading audio in the development environment still fails at the transcription step, though. Catching that error is what remains.
![[Admin settings > Environment > Audio] Choose which of three providers handles speech recognition. (development environment)](/_next/image?url=%2Fnewsletter%2Fvol-3%2Fxgen-dev-stt.jpg&w=3840&q=75)
Personal cloud storage
70%We are connecting your PC or laptop to XGEN so an agent can read and write the files on it directly. It is switched on and off per person from [Cloud] on My Page, which also shows connected devices and their change history. Folders are pinned so paths hold even when a device is renamed, and file access is verified by the server in two stages.
![[My Page > Cloud > Storage] Your files sit on the server and the connector lets you use them from your own computer too. It splits into three tabs: files, connections, history. (development environment)](/_next/image?url=%2Fnewsletter%2Fvol-3%2Fxgen-dev-cloud.jpg&w=3840&q=75)
Documentation build automation
80%A pipeline that finds, on its own, the manual chapters a code change touches and rewrites them. It watches develop, and when a merge request that changed on-screen wording comes in, only that chapter goes into the queue; XGEN rewrites it and raises it as a documentation MR. That MR carries the originating code MR — why this document changed.
It ran eleven times over the past two weeks, and more than twenty chapters — user management, permissions, LLM settings, the governance dashboard — were brought up to date this way. On 6 August the final step landed: a dated record of what changed that day and why. This step uses no LLM. It only assembles the change list and the originating MRs, so there is no room for judgement to enter, and on a day with no updates it records what was reviewed instead.
The scope right now is the user, administrator, operations, and common manual Markdown, and automatic screen capture is next in line. [Solution guide], read inside the app, connects as soon as gateway routing opens.
This approach is called living documentation. Compile code and you get an executable; from the same code, the documentation compiles out too. Documentation is not something written by hand but a build artifact. Robert Martin, who wrote Clean Code, said the truth can be found in only one place: the code. If so, the documentation should come out of that one place as well. Build automation is not a convenience but the only way.
Agent harness v2
75%Continuing from the last issue, we are attaching memory and state logic. We are rewriting the executor and tool logic to build a harness agent on top of XGEN agents, and running an experiment on agents that remember per-person context.
AI avatars
90%Per-user avatar storage, serving, and deletion (Live2D, Spine) reached production since the last issue. The upload confirmation and naming flow are tidied up, so what remains is a single connection: actually drawing the avatar into the chat screen.
![[My Page > Settings > Avatar settings] Upload a Live2D or Spine model, or a photo, and it appears in the chat screen. (development environment)](/_next/image?url=%2Fnewsletter%2Fvol-3%2Fxgen-dev-avatar.jpg&w=3840&q=75)
Ontology v3
55%We are still researching build logic that does not lean on an LLM. Search speed and accuracy on Fuseki and Postgres and the dynamic top-K retrieval logic are being reworked, and we are checking with benchmarks whether build quality holds with local models alone.
News
Technology news
Industry news we watched over the past two weeks, and what it means for us.
The standard for attaching tools dropped sessions
The new specification of MCP — the standard for attaching tools and data to agents — was finalized on 28 July. The biggest change is that the protocol no longer holds state. Session IDs and the handshake are gone, so servers can run several deep behind an ordinary load balancer. As extensions were promoted to formal features, MCP Apps, where the server draws the UI, and Tasks, for long-running work, came in, and OAuth 2.0 and OpenID Connect compatibility plus a deprecation policy settled into place. It is the first major revision since the standard moved under the Linux Foundation last December and became vendor-neutral.
Dropping sessions is ultimately an operations story. Until now, scaling out MCP servers meant keeping the same user pinned to the same pod; that constraint is gone. This issue talks about attaching external APIs to collections — and this document is where the industry writes down how that act of attaching is being standardized. If you plan to scale out MCP servers, start by checking whether you can drop session affinity.
What an agent does not know is not the code — it is the organization
Spotify published Xirp, its internal AI coding environment. The diagnosis stands out — agents decide fast and confidently, but cause production incidents because they do not know organizational context. Who owns this service, what it depends on, why it was designed that way: none of that is in the code. It is in Slack threads and in people's heads.
Xirp pulls that context from the developer portal into every session, and pushes knowledge that surfaced in a session back out into documentation. Instead of making the agent smarter, it increases what the agent knows.
That return loop is what we do not have. Our documentation automation leaves a record every day, but what it holds goes only as far as why the code changed. What was decided in a meeting, and why we chose that direction, is still written down nowhere.
This is not a story about needing a new system. It is a question of whether to put one more line into a place that already runs every day.
A third of the price, twice the spend
The AI inference cost enterprises pay hit a low for the year. The average price per million tokens fell from $18.40 in Q1 last year to $6.07 in Q1 this year, and sits around $1.16–1.18 in early August. Open models' share of enterprise token usage also grew from 11% to 38% in a year.
And yet what enterprises actually pay did not fall. Over roughly the same period, enterprise AI spending more than doubled, from $3.5bn to $8.4bn. Because cheaper simply means more use. Google said its monthly token throughput grew 330-fold in two years.
The leaks are quite specific. One agent stuck in a loop burned $47,000 over eleven days. Because every step resends the whole conversation, cost accrues with the square of the conversation's length. Sending work a small model could handle to a top-tier model costs up to 50× more; not caching repeated input, up to 90% more.
The ways to cut it are already settled. Filter with cheap models first (classification and scanning on a $0.10-per-million-token model, final judgement only on a model in the $10 range), keep the part that does not change in cache, and stop resending the whole conversation every time. Stack all three and reports show 60–80% cut in production. Cloudflare, which had attached 2,500 tools, folded a tool list of 1.17 million tokens into two, at 1,000 tokens.
For 'it got cheaper' to hold, the unit of counting has to be the same. The price of one token became a third, but the number of tokens it takes to finish one job grew faster than that. To decide which of the three to start with, you first have to see where it leaks. Stanford HAI found that teams measuring tokens per tool call find their savings three times faster than teams looking only at the invoice total. Our admin screen currently goes as far as per-user totals. It looks like it needs one more column beside it, counted per call.
Reading
Reading
Control the ideas, not the code
antirez, who built Redis, wrote up how he works these days. Writing code and hunting bugs go to the model; idea design, QA, optimization strategy, and design documents he writes himself. Building LLM inference software that runs locally, he had the model implement DeepSeek and GLM support — but you cannot say 'implement it' and expect the result to work, he says. Instructions only hold if you understand the design and the performance.
His conclusion is this. If you hold the idea of the software, looking at the code itself is mostly pointless. He writes that nobody should read this code — read only the idea the code carries. And he adds that a book from the seventies explains the present better than much of what came out between 2000 and 2020.
The uncomfortable side is not his argument but us. The people who say you must read the code do not actually read it. Try to remember the last time you scrolled a diff to the end before pressing approve. antirez decided not to look, and took hold of the design instead. We say we look, and do not. Of the two, he is the honest one.
When code gets cheap, where does the bottleneck go
Google published a piece titled 'why Go is an ideal language for AI-assisted development', but what stays is the diagnosis before the language argument. How fast a person writes code hardly matters now, it says; what matters is reviewing, verifying, and maintaining code that is already written. The phrase that the bottleneck moved wholesale from generation to verification appears too.
There are numbers. First generation is 95% correct, but repeat the same task and errors accumulate as context is polluted, so accuracy falls while token cost rises. Hence the logic that readable syntax, static types acting as an automatic safety net, and compatibility that compiles 15-year-old code unchanged, hold value.
Two hundred and ninety-three merge requests landed on internal branches alone in the past two weeks. The documentation build automation in this issue's in-development section is aimed exactly here — make the manual change when the code changes, and reduce the share a person has to chase. In the past two weeks alone, more than twenty chapters were updated that way.
It is also a structure that blocks a problem caused by cheap generation with yet more generation, though. Who reads an automatically written document, and what confirms it is right? That question waits at the next stop. The only answer we have right now is that a person opens the chapter.
Rewrite all the code, all the time
A post from 4 August with a bold premise. The cost of producing code keeps falling — so what if reimplementing a large codebase wholesale came down to the level of today's SaaS subscription? The author's starting point is that the way software is made would then have to change.
The design goes like this. Keep the requirements specification in the repository instead of the code. When a security policy changes or a performance target moves, edit the spec, press a button, and regenerate everything. Regenerating from new requirements should be as simple as recompiling a program, he writes. Code becomes a disposable by-product of the artifact that actually lasts, the piece says.
He is firm that automatic generation alone will not do. You must be able to verify that the generated code kept to the requirements, and for that you have to write the specification in a language whose meaning does not drift. Requirements written in natural language alone do not make this picture work.
What the design aims at, in the end, is fixing. Much of the time development takes goes not into making something new but into holding on to what is already made and fixing it. If you can pull it out of the spec again, you gain the option of making it anew instead of fixing it.
So we counted how much we are fixing. Of the 293 merge requests raised on internal branches in the past two weeks, 125 — 43% — fixed something. Two of those had [urgent] in the title: the error where uploads failed entirely, and the one where the DB query node died. This number may mean quality is poor, or it may mean we fix things often because we can fix them fast. Which one it is cannot be told from the number alone.
One more thing to note. We are building a system where the manual changes when the code changes. The code is the original and the documentation follows behind. This piece proposes the exact opposite: requirements as the original, code as the result. What ought to be the original has no answer yet, but asking it this way sharpens it a little. What in your repository must never be lost? If all the code is gone but the requirements remain, you can make it again. The other way around is hard.
Papers
Papers
Papers worth attention, close to what the team is researching. Two of them look at the same structure from opposite sides.
Tool-Making and Self-Evolving LLM Agents in Low-Latency Systems
A paper on the waste of an agent regenerating the same procedural code on every request (Kalle Kujanpää et al., 9 July). Switching to compiling repeated business procedures into pre-verified, versioned tools cut latency by up to 42% in a live service and improved the error rate by 53%. Tracing what was used when also became easier. The same ground XGeny stands on in this issue.
Safety in Self-Evolving LLM Agent Systems: Threats, Amplification, and Case Studies
The same structure seen from the other side (22 June). Once an agent builds its own tools and accumulates memory, a bad influence that got in once is not erased and carries into the next generation. Splitting the attack surface into 25 areas, 17 were exposed, and the more evolution-centric the design, the more the surface grew — by 3.5×. The point: attacks that used to disappear when the session ended now survive along the lineage.
Coming up
News and our channels
Product news and team channels, together with what we will carry on with in the next issue.
XGEN DeX · coming soon
An execution layer carrying enterprise AI to the desktop
The AI agent runs on the server, and you work with that agent from your own desktop. It is a way of connecting that leaves central control as it is and does not change how you work.
So the resources an agent uses are not bound to the server alone. Attach an MCP server running on your PC and the agent can call tools inside the corporate network, or programs that exist only on this computer. Server resources and local resources, used together. More detail in the next issue.

Plateer AI Labs YouTube channel
XGEN demos and technical sessions go up here. Subscribe and you will see each new video as it lands.
How was this issue?
If there is a topic you would like covered, or something that fell short, tell us. Your view shapes the next issue.
Send feedback