AI Engineer World's Fair 2026

Turning My Obsidian Vault Into a Local AI Engineer — Filip Makraduli, Superlinked

Read the talk

Turning My Obsidian Vault Into a Local AI Engineer

Filip Makraduli connects an Obsidian vault to private document-processing tools through MCP and Superlinked’s inference engine. The scanned-document demo explains the offloading mechanism; the closing questions expose why redaction also needs control over raw-file access.

From a talk by Filip Makraduli

At a glance

Ideas worth remembering

  • Preprocessing a scan into redacted Markdown changes what the main agent needs to consume: OCR extracts the text, and redaction masks sensitive values before the intended handoff.

  • MCP separates the agent’s tool interface from SIE’s model-serving infrastructure, where worker pools, per-worker batching, autoscaling and model swapping support different workloads.

  • The proposed model router would consider both task requirements and GPU state: a warm model can be preferable to a nominally cheaper model that needs reloading. This remains roadmap work.

  • Model configuration must produce the required artifact. A summarizer that spends its generation on thinking and returns little or no summary is a concrete failure, even if inference runs successfully.

  • Private processing and redacted tool responses do not alone prevent the agent from reading raw files first. File permissions, harness design and evaluation must address that earlier access path.

A well-organized vault still has expensive, sensitive files

An Obsidian graph can organize Markdown files and show their connections. It does less to answer a practical question: what happens when a coding agent needs to work with sensitive documents? Filip Makraduli of Superlinked starts with that problem. Giving Claude Code or Cowork access to a vault can expose files, while processing scans and images through the main model can consume substantial context and tokens.

The proposed workflow preprocesses documents on infrastructure the operator controls, then returns a smaller artifact to the agent. A scan can become extracted text; sensitive entities can become masked labels. The main model receives material prepared for its next task instead of every page and image in its original form. Smaller artifacts also leave more room in context for the work the agent actually needs to do.

Three requirements shape the design:

  • Lower token use. Move document processing, particularly OCR, away from the main agent model.
  • Control over sensitive processing. Run preprocessing in a private cloud or self-hosted environment.
  • Adaptable models. Test open models and task-specific LoRAs rather than committing every operation to one general model. LoRAs provide a way to adapt models to narrower domains.

Storage was the comparatively easy part. Obsidian already held the files and their relationships. Running several open models, comparing them and deploying inference at production scale created the harder problem. Superlinked’s open-source SIE project supplies both the inference system and cluster deployment. The workshop uses a Superlinked-managed cluster; a local Docker setup is another option, with slower processing expected in that setup. Here, “local” therefore describes a workflow that can remain under the operator’s control, rather than a requirement that every model run on the laptop.

0:451:15
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

0:15 · section reference included

Keep the agent workflow; move document work behind MCP

The intended user experience stays inside Claude Code. When a task needs sensitive or token-heavy processing, the agent calls a tool and receives its result. Consider the talk’s example of a ten-page PDF containing images and other details: an open OCR model processes the document first, and the agent receives the extracted artifact. The work still happens, but a specialized model performs it before the main agent consumes the result.

MCP provides the interface between that familiar agent workflow and a separately operated cluster. Makraduli chose it to separate responsibilities and support additional tools over time. SIE controls the worker pools, GPU choices and model placement behind the interface. A skill can help the agent use the integration, while the server and workers perform the heavy processing.

Where does a tool request go, and where does inference happen? The three-tier layout separates the agent host, the SIE MCP server and the GPU cluster. Requests travel through the MCP server to the workers; results return through the same integration. In the self-hosted design, the MCP service and inference work run in the operator’s private cloud. That placement describes the processing path; the closing discussion will return to whether the agent can also reach raw files through another path.

The integration uses JSON-RPC requests, responses and notifications for initialization and communication. Tools become available through discovery. MCP can also support client capabilities such as sampling and elicitation, but this implementation deliberately avoids those additional exchanges: the SIE MCP service exposes tools and responds to their calls. That is a narrower interaction model chosen for the privacy-oriented setup.

For transport, the talk distinguishes local stdio use from the streaming HTTP approach chosen for the service. Makraduli describes the newer HTTP arrangement as consolidating communication that previously used separate endpoints for the handshake and streaming. The operational purpose is straightforward: expose remotely hosted processing through a tool interface the agent already understands.

The tool path separates agent interaction from GPU processing

Agent host and MCP clientagent — Claude Code, Cowork or another compatible host selects and calls tools.
SIE MCP serverprivate-cloud — Exposes document-processing tools and connects their calls to inference.
SIE GPU worker poolsprivate-cloud — Run the available models and perform the requested processing.
The MCP server connects the host’s tool calls to SIE workers and returns their results. The server and inference cluster can run in the operator’s private cloud; this diagram does not imply that raw-file access elsewhere is blocked.
Read the diagram as text
  • Agent host and MCP client. agent — Claude Code, Cowork or another compatible host selects and calls tools.
  • SIE MCP server. private-cloud — Exposes document-processing tools and connects their calls to inference.
  • SIE GPU worker pools. private-cloud — Run the available models and perform the requested processing.
  • Agent host and MCP client → SIE MCP server: Tool request.
  • SIE MCP server → SIE GPU worker pools: Processing job.
  • SIE GPU worker pools → SIE MCP server: Processing result.
  • SIE MCP server → Agent host and MCP client: Tool response.
7:107:40
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

7:10 · section reference included

Tools expose specialized work without changing the host

The available tools cover several distinct transformations:

  • Documents to Markdown. OCR extracts a text artifact from document inputs, including scans.
  • Entity extraction. Named entity recognition models identify relevant entities in documents.
  • Captioning and tagging. Models produce descriptions or labels for content.
  • Structured and generative tasks. Other tools support structure generation, summarization and question answering.

Makraduli presents open OCR models as strong enough to make this offloading useful without an inherent quality sacrifice. That is his assessment of the available models, rather than a document-level accuracy measurement from this demo.

The tool layer is extensible: a contributor can add another tool while using the same inference infrastructure underneath it. Setup can use a locally launched cluster, a self-hosted cluster or a managed endpoint with an API key. The workshop proceeds with credentials and an endpoint already configured, so the live exercise focuses on the document transformations rather than provisioning hardware.

14:4115:11
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

14:41 · section reference included

An inbox NDA becomes a masked document

The demo vault contains an inbox of synthetic files standing in for emails and documents. Examples include invoice-related messages and an NDA containing sensitive fields such as a phone number and Social Security number. The request is ordinary language: “redact the data from the NDA document.” This gives the agent a task to delegate through the configured integration.

What does the agent receive after redaction? Makraduli first shows a previously produced example with masked entities and labels such as email and person, then describes the current run reporting a freshly redacted file, redacted spans and label counts. These are different parts of the result: the artifact carries the usable document, while spans and counts describe the redaction operation. The intended behavior is for the agent to receive this processed version rather than sensitive values from the original.

The run reports 10 redacted spans, counts by entity type, and the processed Markdown output path; it also labels detection best-effort.Open full source frame
The run reports 10 redacted spans, counts by entity type, and the processed Markdown output path; it also labels detection best-effort.
Redacted 10 spans from inbox/stardust-nda.html → processed/stardust-nda.redacted.md

Label counts:
- person: 3
- email: 3
- phone number: 1
- social security number: 1
- date of birth: 1
- home address: 1

Detection is model-based and best-effort — not a certified scrubber, so spot-check before relying on it
18:1018:40
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

18:10 · section reference included

A scanned contract needs extraction before redaction

The next request adds an earlier processing stage: preprocess the scans and redact them. A scanned contract is an image, so its words first need to be extracted through OCR. The stated sequence is to convert the document to Markdown, then redact the extracted content. OCR changes the representation into text the next tool can process; redaction changes which values the resulting artifact reveals.

What survives that two-stage transformation? The before-and-after example moves from the scanned contract image to a Markdown file containing extracted material with sensitive content redacted. That is the useful result for the downstream agent: a text document it can work with, with masking applied before the intended handoff. The example demonstrates the workflow’s form, rather than establishing that every sensitive field across arbitrary scans will be detected.

A status line also attempts to count saved tokens. Makraduli says that counter still needs updating to work properly, so it does not establish a measured saving for this run. The supported cost mechanism is the preprocessing itself: the main agent can consume the resulting text artifact instead of processing the original image-heavy input.

20:4021:10
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

20:40 · section reference included

Worker pools make several specialized models practical

Behind the simple tool call, SIE must serve different models without treating every task as the same GPU workload. A gateway connects work to different worker pools, and batching happens per worker rather than entirely upfront. Makraduli reports better performance from this arrangement. His explanation also refers to a shared queue workers pull from, though it does not fully specify the queue and batching topology; the clear design distinction is that batch formation happens at the workers.

Separate worker pools let hardware follow the workload. A heavier model may need more expensive hardware, while another can run well on an L4 spot instance. Sending both to the expensive option wastes that distinction. Autoscaling can reduce capacity when it is unused, adding another way to control the cost of keeping the service available.

Model hot swapping supports another kind of flexibility. Smaller models for named entity recognition, embeddings or generation can share GPU capacity through switching and swapping. The talk gives the example of five LoRAs fine-tuned for different subareas of work: being able to swap among them makes it practical to compare their behavior. The same infrastructure can support task bundles for document parsing, embeddings, code generation, captions or policy checks.

22:5823:29
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

22:58 · section reference included

Embedding results and narrow adaptations have different evidence

How close did the tested embedding models come to the comparison model, and at what price? Makraduli reports roughly 10× lower price and says the best embedding model per task reached 99.8% of the frontier comparison’s quality on MTEB tasks. These are reported embedding results, not measurements of the OCR, redaction or generation demo. The recording does not supply the full pricing conditions or benchmark protocol needed to reproduce the comparison.

The benchmark slide reports 99.8% of frontier quality, about $10 to embed 1B tokens, and 3–7× faster per embedding; the text gives the MTEB comparison and task wins.Open full source frame
The benchmark slide reports 99.8% of frontier quality, about $10 to embed 1B tokens, and 3–7× faster per embedding; the text gives the MTEB comparison and task wins.
OF FRONTIER QUALITY
99.8%
best SIE model per task: mean nDCG 0.613 vs
the provider frontier 0.615, and SIE wins 3 of 8
MTEB tasks outright (SciFact, CosQA,
SCIDOCS).

TO EMBED 1B TOKENS
~$10
on SIE stella vs $120 to $130 on voyage,
openai, and cohere: 7 to 13× cheaper, and
under even the cheapest lite tier.

The architectural lesson is about end-to-end performance. Queueing, batching and hardware placement affect how long a job takes and what serving it costs, even when the model’s individual inference operation has not changed. SIE works on both infrastructure and per-model optimization, but Makraduli emphasizes that the surrounding system alone can materially improve production behavior under suitable loads.

Task adaptation provides a separate benefit. Colleagues experimented with relatively inexpensive German-language LoRAs, with German legal language offered as a niche use case where performance improved. The operational advantage is the ability to fine-tune, deploy and compare several adaptations quickly. No numerical improvement is supplied for that example.

Deployment extends beyond publishing model-serving code. The project includes Helm charts, Kubernetes infrastructure and Terraform-based cluster deployment. The same MCP service can handle document questions, fact extraction and reading tasks, while the deployment materials make it possible to operate the processing infrastructure independently.

26:5827:28
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

26:58 · section reference included

Future routing would consider both the task and GPU state

The demonstrated system calls tools backed by configured models. A proposed next step would also choose the model underneath each tool. An OCR request could express a preference such as cheap processing, allowing the system to select an appropriate model for that task. Makraduli explicitly places this routing capability on the roadmap rather than presenting it as built-in behavior.

Routing would have two kinds of inputs: the task’s requirements and the cluster’s current state. A model already warm on a GPU can respond sooner than one that must be loaded. A model with a higher nominal cost might therefore be cheaper for a particular request than a supposedly cheaper model that has been evicted and needs reloading. The proposed decision compares the cost of completing the request, including model availability, rather than comparing model prices alone.

Reasoning introduces another task-specific decision. While building a summarization tool, Makraduli encountered a model that spent its available generation on thinking tokens, leaving a very short summary or no summary at all. The failure was visible in the missing deliverable: computation happened, but useful output did not. Model selection and the thinking setting therefore need to fit the operation. Reasoning may help some tasks, while consuming resources without producing the required artifact in others.

Councils of models and model-based judges are also future possibilities, with corresponding evaluation problems. A judge can be biased; an optimization process can learn to exploit its scoring target; a reasoning model can occupy GPU time without finishing useful work. Testing models before routing work to them matters because more inference activity does not by itself imply a better result.

31:3932:09
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

31:39 · section reference included

One tool interface still needs several model runtimes

A shared interface does not make the underlying models interchangeable at runtime. Different model families can implement attention differently and require different execution paths for their forward passes. The catalog therefore distinguishes architectures and output types, while the inference system supports the runtimes those families need.

The catalog also distinguishes encoding from scoring. Encoding models support embedding-based retrieval; scoring models can rerank candidates. Exposing those capabilities through tools opens a path to custom retrieval workflows alongside generation. Makraduli points to examples, quick-start material, credential setup and migration guidance for people moving an existing API-based workflow onto SIE. These materials support trying the infrastructure with a real task rather than treating the document demo as its only application.

38:0138:31
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

38:01 · section reference included

Redacted output does not prevent an earlier raw-file read

The final questions test the privacy premise at the moment before the tool call. An audience member asks whether Claude could read the raw document while deciding what to do. Returning only a redacted version answers what comes back from the processing service. It does not answer what the agent could read beforehand through its existing file access.

Makraduli says his tests appeared to work without leaking data, while acknowledging the need for further evaluation and stronger guardrails at that initial stage. The consequential limitation is that the demonstrated processing path does not establish an enforced restriction against raw-file reads. Hosting OCR and redaction privately controls where those tools run; it does not, by itself, remove another reader’s access to the source document.

Two possible changes emerge from the discussion:

  • Control the harness. A custom harness using an open model could place more of the agent workflow under the operator’s control. The preprocessing benefits can still apply without Claude Code.
  • Separate file access. Another audience member proposes advertising a file’s existence to the worker without connecting the agent to the same filesystem. SIE would retrieve the file for processing. This separates knowing which file needs work from being able to read its contents; it is a proposed arrangement in the discussion, rather than a demonstrated restriction in the live setup.

The remaining questions clarify ownership and ingestion. The demo uses hardware hosted by Superlinked, but users can configure and deploy their own cluster through the repository’s Terraform infrastructure. Asked whether the MCP integration has a file watcher, Makraduli answers that it sends the file to the main worker, where processing occurs; he does not establish a watcher mechanism. Managed compute is offered to make experimentation quicker, while self-hosting remains an option.

For sensitive use, the useful next test follows directly from the audience’s objection: can the agent reach the original document before preprocessing finishes? The scanned-contract workflow supplies a smaller, masked artifact for downstream work. Making that artifact the agent’s only available document requires the file-access design to support the same intention as the tools.

42:1242:29
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

42:12 · section reference included

Resources

Read the complete timestamped transcript
  1. 0:15

    Hello, hello. Um, I guess we're starting. I know some of you are still joining in, but I'll go on and, uh, you can jump in at any time. Uh, so you might have seen the title of this talk. Um, and what I have on the slide here is slightly different, but I promise it's the same direction and the same general idea. So it all started from me wanting to build a use case that's

  2. 0:45

    around privacy and token costs, basically. So, um, I started with Obsidian. I had some markdown files there. Um, and as you know, it's like you have this nice, um, graphs and it's all good. Looks very nice. However, um, I had certain issues beyond just organizing the files. So a lot of people do these knowledge graphs

  3. 1:15

    and so on, and like memory for agents, and that's quite good. However, I needed to approach this differently because there was a concern around privacy. So when using agents, when using Claude Code, when using Cowork, uh, you can expose your files and for some institutions, for some people, this was, um, a requirement that, um, needed to be met. So

  4. 1:45

    the goal was to keep things private and self-hosted, but also make them quite usable and friendly so that people could actually do these things. And, um, there was kind of this openness to fine-tune, to be very adaptable, to use open source models and, um, I found that the solution was, um, in Superlinked, which is a model inference,

  5. 2:15

    um, engine that's open source. So it has both a cluster and a model inference solution. And I will be talking about that today and how I managed to kind of merge these concepts together and, um, create something that leans on these three things. So the first main idea was I wanted to make Claude Code a bit cheaper and save on tokens. So we know

  6. 2:44

    how with the release of Fable, there initially there was this, um, API-only pricing and that kind of, uh, maybe disappointed a few people or the token economics got a bit more attention now. So that was one thing. Especially for document processing, sensitive document processing, where you need to do OCR, there are a lot of scans, images and stuff like this. The token cost can ramp up, so I wanted to find a way to kind

  7. 3:14

    of do this. But also having smaller artifacts means that you get better context, so you kind of limit context loss in a way, and you don't like fill out, um, the context with data that can be processed in some way else. Um, and I wanted to make this private. So yes, for certain situations it's fine to paste everything into Claude Code or have that API working there,

  8. 3:45

    but what if you could kind of self-host and have your own VPC or your own cloud to pre-process your sensitive documents and then return something back? So this was another target of mine when building this. And also I wanted adaptability. So it wasn't just, um, privacy and lowering token costs, but also having the chance to test out multiple models, maybe host LoRAs that are very task-specific

  9. 4:15

    because with these very sensitive use cases, usually there is some sort of fine-tuning or adaptation towards that niche use case. So I had to do that as well. And the setup, um, involves Superlinked, um, and SIE, the repo. So you can-- For the purpose of today, you can go to, um, the repo which is fully open source.

  10. 4:45

    So you can find it on GitHub. It's Superlinked SIE. Um, you can... Yeah. So this is it. This is the logo. And I'll be talking about, um, an integration that's, um... Sorry, not here. So an integra-- an MCP integration, which is basically a package that we did, which is this one here. So you can also have a look at this sub-directory. So this is where most of the talk

  11. 5:15

    will be about, but I'll also mention why actually the inference was the bottleneck when building something like this. So it was easy to figure out how to store the data, maybe in Obsidian and so on, and have these connections between the data. Um, that was the easy part. I could also use an API. However, if I wanted to do open source, if I wanted to do open source inference at scale and testing out multiple models, being

  12. 5:44

    able to deploy this in production, things got a bit difficult. And that's why the infrastructure advantage that SIE offers, the fact that you're able to kind of deploy both a cluster and the models themselves was a very big advantage in my case. Um, here you can see this, um, Obsidian example, so I'll work with kind of some of these things. Uh, but you can also

  13. 6:14

    try this yourself. Um, however, I will be using a managed cluster. We cannot, um, I cannot give that to you right now live. However, you can go to our website, which is this one, and here you have this Apply for In-Inference Grant. So you can go there, and you'll receive your, um, API key that you can try, and you can do things quicker. If not, you can do things locally 'cause there is a Docker

  14. 6:44

    container and all that. Uh, it will just take a bit slower to do these things. But I'd prefer if you kind of listen to me now and then try things after, but also in parallel if you want. And we also have this very cool, um, kind of QR codes memorabilia stuff where you can get an even better cluster as a thing, and you can find them here, uh, after the talk.

  15. 7:10

    So, um, as I said, the idea was to have this privacy element and have a way to offload. So basically, I didn't want to disrupt my normal usage day-to-day. Um, so I'm just working in Claude Code, and then if there's a specific task that needs to be done on my virtual private clouds that needs to be processed, that's sensitive, that costs a lot of tokens, I can just offload it and continue my work.

  16. 7:40

    So the natural direction was to build some sort of, um, skill or plugin, but this was even elevated more by building a whole MCP server that's, that gets called, um, in Claude Code. And, uh, there's that element of like using skills, but also having actually a dedicated edge that, uh, can actually do the heavy lifting. And you can also benefit from

  17. 8:10

    Superlinked Inference, which I will talk about later on, kind of how we've done this and what are the advantages of using, um, Superlinked Inference engine. So it saves tokens because, for example, um, a number would be to have like maybe ten pages of a PDF that has images, different details in there. So if you pre-process that with good open source OCR models and then return to your main, uh,

  18. 8:40

    agent, uh, harness or Claude Code or whatever you're using, you get the context, but also, uh, benefit on the lower token spend and better context and so on. So that's the general idea, especially for OCR, this is apparent. However, there are multiple, um, kind of token-saving advantages even beyond OCR. So why MCP and not

  19. 9:10

    just an API or a plugin? Um, because we have a dedicated cluster, it was much better to kind of separate the responsibilities and, uh, have this as like the backbone to then build more, um, details and more, um, features further on, for which I will also talk about later. And everything runs on a server you can control, so through SIE you can pick your, uh, worker pools, you can pick your,

  20. 9:39

    um, GPUs basically, and understand which models are pinned where. And that flexibility from a cloud perspective was an advantage and, um, I wanted to keep it that way and that's why I went with MCP rather than just a skill. Um, and it exposes the relevant tools. So this is roughly how it would work. Um, if it's just a plugin, it's also on your laptop or on device. In this way, you can kind of

  21. 10:09

    offload the same experience, but bring it to the cloud, which is your own cloud, and you can control things there. So it's a much cleaner setup. Um, also a lot of the examples here are with PII, so personal identifiable information, and there is a tool that gets called for like redacting specific details around documents, which is one of the central use cases of this privacy aspect. Um, and

  22. 10:40

    the MCP setup, it has three tiers. Um, so there is-- You can see in the middle the SIE MCP. There is the MCP client, um, that's, um, kind of client and host through Cowork or, um, Claude Code or whatever you use, and that communicates with the SIE MCP server. And then you have actually SIE, the cluster that has the, um, GPUs and the worker pools that do

  23. 11:10

    the work by communicating to the, um, MCP server, and you have different models that are available. And we also have a good queuing mechanism for this, uh, GPUs, um, and I will go more into that a bit later. And the idea with M-MCP, as you know in general, is to have like one interface of communicating, especially if we're building more and more tools with this direction of model routing. Because the demo and

  24. 11:40

    the version that we have now is around tool calling. However, we're building stuff around model routing and understanding which models to pick for different tasks based on, um, evals and based on costs. And all of these models would be open source and on your GPU. So, um, there is this important direction as well. Um, so it's a forward-thinking approach. Um, and there is the host, the client, and the server. Um, you can do

  25. 12:10

    this like with any- Mm, mm, setup that you want, like whether it's Claude Desktop, Claude Code, and so on. And the communication is kind of done through JSON-RPC, so there are three, like, response, request, and a notification just to kind of, uh, initialize this and have this handshake, uh, protocol done so that you can authenticate the MCP Edge and so on. And, um,

  26. 12:40

    an important detail is that the server exposes, um, different stuff. So in the MCP standard, that has changed a bit since its inception. Um, but the main thing is that it exposes tools that then, um, Claude Code would use. However, in general, there is, in kind of the MCP universe, there is a situation where, um, the client can also expose stuff like

  27. 13:10

    sampling or elicitation, which kind of make this a two-way communication, so not like a standard client-server setup. However, in our case, just because this was more of a privacy setup, we do not do this. So, um, basically the SIE MCP Edge, um, only exposes the tools, and they can be used, the ones that kind of were initialized in the handshake, and that's it. Um, so

  28. 13:40

    it only kind of does these responses. It wouldn't, um, do these more complex tasks, uh, in our case. And this is the idea, that the tools are discovered and you just go from there. Basically, you, uh, kind of have the tools which give you different, um, abilities and, um, you can run, run that. Another detail is that, um, you can do this also locally. So in the

  29. 14:11

    MCP universe, again, the stdio is like for local development. However, we wanted to use the streaming HTTP responses. This was done in the past by two endpoints, um, that did, uh, the streaming and one did the HTTP handshake, but now there is a standard that kind of does this all at once, so that makes things smoother. And these are the tools that we have, so I'll spend a bit more time on this

  30. 14:41

    slide. So currently, the kind of setup and, uh, things you can try are around these models. So there is this tool that's like docs to markdown, and, um, that one uses OCR, um, models. Um, these are the open models that we have currently. So the idea is it saves token costs. It uses also a very good open source model. Um, a detail here is that with

  31. 15:11

    OCR models especially, the open source models are very good, so you're, you're not compromising in quality by offloading some of the work to open source, um, OCR models. So it's not that, "Oh, I'm using open source, I'm sacrificing something." That's not the case at all, especially here and even in general, uh, open source models are catching up, and finding a way to bring them out there, bring them in production is, um, quite

  32. 15:41

    useful and quite important. There is extract entities, which would just generate the relevant entities in the docs with different NER models. There is-- are different tools around captioning and tagging. There is also, um, a capability around, uh, structure generation, uh, summarization, question answering. And the good thing is also this is open source, so you can also do a PR and add a different tool

  33. 16:10

    there right now, and that would be something that kind of we can make, make it as a part of this and, um, still it will utilize the inference, which is the bigger bottleneck in situations like this. Um, and that would be the idea. You can kind of clone the repo that I showed before and, um, you can bring up the cluster locally. But also, uh, if you, again, go on the website and request that, you'll

  34. 16:40

    receive an API key at some point. And this would be kind of the setup. You need to get, uh, the API key. You can also self-host if you're in for the longer term, let's say. Uh, so it doesn't have to be our cluster, it can be your cluster. Um, and you just need to set these things up. I'll also be releasing, so an article that will kind of explain this in a bit more detail, and you can

  35. 17:10

    go step by step and run this. So no, no rush. Uh, you can enjoy the talk and relax and try things out at your own time in many ways. And, um, here we have the repo, and also the link to kind of getting the, uh, the computes and the cluster. So you can basically request, and you get some form that you fill out, and then you'll receive the API key. And this is just the setup that I'll be going through and then

  36. 17:40

    trying out. Uh, and hopefully the demo gods are good. Someone mentioned this as, uh, a thing at one of the talks, so I like the idea. Um, and yeah, this is kind of just the setup, um, which I have kind of done to an extent. And I will now do the demo. So I'm going to kind of Claude Code. I am in the relevant packages directory. So I can

  37. 18:10

    say, "Okay, can you..." So I have basically just a set of files that are in an inbox. Um, folder. So I'll just show you here. So for example, this is the graph, and it's like inbox, and you have different... Imagine these are different emails. So this is all synthetic data, but, uh, relevant data. I'm not using the real data that inspired this project. But, um, obviously, these are

  38. 18:40

    stuff like, okay, um, there are some emails about an invoice and, um, some sensitive information all over, and you can just go through this. There is, um, some NDA that would have like phone number and social security number, for example. So that's how the data looks. And for example, here you can go and, uh, maybe say, "Can you,

  39. 19:11

    uh, redact the data from the NDA document?" Something like that. Uh, cool, we get free credits. So, um, the way things look, one example is this. So this is some, some of the stuff I tried before. So this is the NDA, and then you get this kind of like, uh, redacted, uh,

  40. 19:41

    document that extracts the relevant details, but obviously there is only email and person, and the entities are masked. And all of this is done on your VPC. So Claude Code doesn't see this stuff or whatever agent you're using. Um, and in c-certain situations, you can get better performances with the OCR stuff. Um, and so for

  41. 20:10

    example, you can see here successfully loaded skill. I found the NDA document. So here I've set up the cluster, so I just input the endpoint and the API key. You would need to do this slightly different, but you can totally prompt even Claude Code, uh, and so on. And here, um, we get, okay, the file contains the freshly redacted output, um, redacted then spans from this to this.

  42. 20:40

    Um, and these are kind of the label counts. It gives us some info there. Um, and maybe we can do something like, "Okay, can you pre-process the scans and also redact them?" To try to see-- So this is in natural language to try to get the OCR models to work and that tool to be called. So you can also configure the tool calling and

  43. 21:10

    all that. Um, and also there is this, uh, status line here that counts the token saved, but I need to also update this a bit to kind of do it properly. But that's also part of the, um, kind of advantage that you can actually see you're saving on token costs. So I'll pre-process the thing to markdown, then redact it. Um, and it's working. And for

  44. 21:40

    example, we can see-- I'll just show you some of the files, just so that I don't like go through all the stuff all the time. There is this, um, let's say, contract before. So this is how it looks. And this is a scan, so I don't know if you can see now 'cause it's a clean one, but this is-- You can see. So it's an image. It's not like text, so it needs, um,

  45. 22:10

    OCR probably. And then if we do the

  46. 22:17

    after one, this is some-- You can see markdown file here, um, that's extracting this stuff, but also redacting them. So... Whoops, cursor. So, um, the idea is that you pre-process the document through the OCR tool calling thing. You get, um, the token saving cost, the better context management, and so on. But you also get the

  47. 22:47

    redacted file, so personal information is not leaked. And

  48. 22:54

    this is also getting done in the meantime.

  49. 22:58

    So that's the idea from kind of a functional perspective, but a lot of things are happening in the background, so it's not just like, um, the privacy aspect and this looks easy, but the heavy lifting is done by this part. So Superlinked, um, and the inference engine and the cluster is set up in a way that it allows you to have multiple models, have hot swapping, uh, of models on different GPUs,

  50. 23:29

    um, have smarter batching so that you can kind of test out multiple models. For example, if you have five LoRAs, uh, fine-tuned to different sub-areas of your, um, work, you can kind of hot swap between them and test out which one is the best even. So we have, uh, a gateway that, um, kind of, um, helps us connect this to different worker pools that each have, um,

  51. 24:00

    this batcher per worker, so that the batching is done per worker, and that gave us better performance instead of just having all the batching upfront. And this is, of course, the architecture of the MCP, uh, solution. So how it works with, um- SIE, so you can see this part on the right, um, is in your VPC. So both the kind of the MCP

  52. 24:30

    work that gets offloaded to Superlinked SIE is in your own private cloud. Um, and this is what gave us the advantage performance-wise, or at least one of the advantages, was the batching technique where, um, if you kind of do the batching without having one shared queue that then each of the workers pull from. In our testing and in general, performance

  53. 24:59

    was lower, so we were able to kind of do this, um, setup and have an end-to-end improvement on latency and performance, even with different models. And the idea is that you also want different worker pools because, for example, at some point you might want to try a heavier model but also have another one that can totally run really well on an L4 spot instance. So you might be like, "Okay, I don't need to waste, um, kind

  54. 25:29

    of this more expensive hardware." And also we have auto-scaling, so this, um, can kind of come down when not used and so on. So, um, that's the setup. And there is the hot swapping of models, so, um, especially around smaller models that can fit into one GPU that are doing like named entity recognition or, um, even smaller generation or

  55. 25:58

    embeddings and so on. Um, you can benefit a lot from having multiple models on one GPU being switched around and swapped. And this goes in the direction of kind of what the MCP does and the tool calling aspect, where you could build agents and have this inference part offloaded using Superlinked, and you can get different bundles of tasks set up, so basically

  56. 26:28

    document parsing, like I explained, or embedding content, or writing code with, um, some generation models, or extracting images or captions from data and so on. Uh, or even like guardrails and structure generation stuff for policy checking and so on. So I'd be also happy for you-- So you get more credits if you, um, kind of build a project and so on. So if you contribute a tool, um, that is maybe around

  57. 26:58

    content guarding or policy checking or whatever you find useful, um, we'd, we'd love to kind of, uh, have that as a contribution. And in some of our tests, we've also, uh, seen that due to this infrastructure that I explained, um, we get very good performance around embedding models. So we also have generation models. Um, but the tests that we have, the benchmarks for, for now

  58. 27:28

    are around embedding models. Um, so you get kind of, um, 10X lower price roughly, um, with very similar quality. So you can see there the kind of... The best, uh, model we had per task for embedding was 99.8% to, uh, kind of the frontier one, and this-- we evaluated this using MTEB tasks. Um, so yeah,

  59. 27:58

    that's, uh, that's the case. We'll have more benchmarks and details around this soon as well. But the point of this is the-- is that, um, sometimes, especially in production use cases and in-- with certain loads, you get the advantage, um, through the end-to-end improvement. So if your infrastructure and architecture is set up well, you basically get the latency improvement and the better performance, um, even

  60. 28:29

    if your per model inference is not optimized. And we're doing both in our case, but that was a revelation that for production use cases was very helpful to know.

  61. 28:43

    And on the example around LoRAs, we've seen that you could kind of, mm, test out LoRAs fairly quickly and fine-tune them, so we're exploring work on that area. Um, so some of the colleagues worked on this German language-specific LoRAs that were fine-tuned, and they were fairly cheap. So having a way to do multiple LoRAs and test them out in production and deploy them quickly,

  62. 29:12

    um, seemed to be quite useful and, um, improved performance in this very, let's say, niche, um, use cases like German legal language, let's say. And, uh, this is kind of how the MCP works. Um, I mentioned a bit around this.

  63. 29:36

    And there are some failure modes that are already there. But again, this is working and it's well, but there are so many more things to do, and I'm kind of very happy to have your, uh, input and PRs and, uh, even just like, um, comments. So you can add me on LinkedIn and all that, and I'm happy to chat always. And that's the idea that the same kind of MCP edge handles every

  64. 30:06

    document job. So you can do question answering, pulling facts, reading documents. Um, so yeah, this should also

  65. 30:18

    work and there is different, again, labels extracted and so on. And you can try this like, um... This, I think, moved the number. But again, um, you can test this live and, um, test out different tools with kind of your own demo data.

  66. 30:39

    And I've explained this to a certain point and what it does now. Um, and yeah, there's the token-saving aspect, and that's very important, um, and not sending data to external APIs, and it all runs in your cloud. Um, and there is a lot of stuff to do kind of in the future. Um, but the operational capability is still there. So we have the

  67. 31:09

    Helm charts and the Kubernetes cluster, and you can use also Terraform Apply to deploy a cluster, which is also open source, so it, it's not, um, hidden, like kind of, uh, just the code is open source, but we have basically everything. Um, and this can go beyond just documents. So if we look at this idea of having the inference solved as a little box in your whole workflow, it unlocks a lot of

  68. 31:39

    opportunities that can go kind of beyond text with other models, um, looking at transcripts, um, even graph-based data, generating ontologies and so on by different tool calls, structure generation. So there are, um, different opportunities and, um, one direction that we're exploring as well is model routing within your own private cloud, um,

  69. 32:09

    which is quite powerful, and I think the, the field is moving a bit in that direction with usually teams exploring, um, this API-based optimization where you have, um, a combination of models working together and the end-to-end performance is better. Um, and there is an option to do something similar in this way. However, this is more like a future roadmap idea, so this is currently not built in. But, um,

  70. 32:39

    the idea is to also pick the models based on the task. So the tool calling will not be tied just to the tool itself, but you could also understand which model to pick for the underlying tool. So if I've only set up, um, one OCR model, I could say that, "Okay, for this tool call, I actually want OCR cheap," or some other sort of tool call that, depending on the task, adapts to what I'm trying to do. And, um,

  71. 33:09

    that's a powerful direction. And there is also playing around with like intent, and there's this mixture of agents approach. Um, because if you already-- Another powerful aspect on why SIE is really good for this is that if you already have the models warm in your GPU, you can hit them much quicker and get the responses quicker, and you can do this model routing based on also

  72. 33:39

    the, the-- how hot the model is or how kind of-- what, what was evicted last, what wasn't. So there is a lot of options also playing around this, uh, card of latency and trying to figure out what are the best models, not just from a general perspective, but from an infrastructure perspective. And, um, doing this is, uh, quite useful, and I, I think a lot of, um,

  73. 34:09

    stuff will be done in this, in this way, um, kinda fairly soon. And, um, yeah, this is the idea that you can kind of, um, estimate, uh, per model to find which models are warm. Um, and then in some cases it would be cheaper to hit a model that's already hot but more expensive rather than reloading a model that's cheaper but kind of, uh, not already there in your GPU. So

  74. 34:39

    this logic can be set up as well to optimize costs and usage beyond the tool level. Um, and I'm just mentioning this stuff just to kind of showcase how powerful, um, inference is and having good model inference set up, um, with all the infrastructure around it, uh, can actually unlock a lot of, um, use cases. There is also, um, a potential for doing

  75. 35:09

    stuff like, um, judges talking between each other or like the council of models and so on. Again, this is more of a future roadmap, but, um, this is a direction that also is an option for things like this where, okay, if you want to include some maybe reasoning tool calls or adjust the response based on like difficulty of tasks, which models are called. For example, uh, an issue I had when building

  76. 35:39

    this was that for one of the summarizing tools, I had, um, model that was, um-- that had, um, thinking tokens. So basically the summarization, mm, was either very short or it didn't happen 'cause everything was done on the thinking side. So, uh, you have to also kind of keep in mind what models you use and whether you toggle the thinking tokens or not. Um, but sometimes reasoning can be beneficial and,

  77. 36:09

    um, it's useful to have a way to do that quickly from an infrastructure side.

  78. 36:18

    And of course, there are some kind of, um, downsides to having, um- A router or a council and so on. However, um, we're also very strong on evals and trying to test models before doing this. So, um, there are different ideas here that can be done. Um, and yeah, um, basically, we don't want to also spend GPU on some models reasoning forever and then

  79. 36:48

    nothing happens. Um, or also have biased models as judges, um, or kind of optimizing something, uh, that, um, then becomes kind of-- By, by optimizing something, you

  80. 37:05

    kind of escape from making it as a real target, but it just becomes something that, like, the models hack and never actually, um, use it-- You can never use that as a proper evaluation. Um, and you can look at our repo. So this is the, kind of the QR code if you haven't yet. Um, and I think the main takeaway for today is that infrastructure and inference

  81. 37:35

    is far more important even for this very API-friendlier ergonomic designs, where you just work with Claude Code, and you can kind of offset your, um, sensitive data, your specific tasks in different ways. And, um,

  82. 37:54

    still the backbone is, uh, the inference. And for example,

  83. 38:01

    I will go here again. So this will be published as well. And, um, you can also find kind of what files are supported, where the LoRA aspect feel, uh, fits, um, what are the kind of, uh, the troubleshooting guides, and so on. And also, um, the most important thing is ask for kind of your, uh, API keys and so on. We also have a full model catalog. We're kind of

  84. 38:31

    also revamping this to be more detailed and useful. But basically, you can have different, uh, you can select different output types, different architectures, because, um, in order to optimize, um, the models, um, and the inference, you need to adapt models in different bundles. So you need to kind of all models maybe implement attention differently, so you cannot run them and run the forward pass in the same way. So you need to have different model runtimes for different model

  85. 39:01

    families so that this works. And there are a lot of details around this. And you can see that models are tagged based on, like, whether they do encoding or scoring. So you can also use, um, scoring models that do like re-ranking basically, if you-- even in this use case of the tool calls. Um, and the advantage there is that you can basically play with your own version of, uh, retrieval through this, um,

  86. 39:31

    MCP and so on. And I would really love if you could kind of contribute to this or, um, give us ideas on how to kind of set this up and, um, build more stuff on top that, um, people find useful. Um, we did, um, a hackathon in London with TechEurope and DeepMind recently, where a lot of people kind of tested this out and were, um, very kind of happy to

  87. 40:02

    work both on the retrieval and re-ranking side, but also generation. So, um, having the, the way of doing both but being supported by that inference is, is very cool. And again, I encourage you to take this, um, free, um, kind of cluster infrastructure credits that you can use. And we also have a lot of examples and, um, full kind of docs that you can have a look at. Um,

  88. 40:33

    basically a quick start and then different model versions and how you can also look at how you can migrate. For example, if you have some workflow done with like OpenAI API, then you're like, "Okay, cool. I wanna test this thing out quickly. What can I do?" You have those, um, options as well. And, uh, this is the repo. So again, this is the package. Um, and here you have kind of what it exposes,

  89. 41:03

    um, and how the credentials are set up. So the, the README here, um, can be, um, checked out. This is the example. So if you contribute with examples and have something more here, that would be very useful. And, um,

  90. 41:26

    this is where you apply for the credits that, um, help you to build, build things and try things out. Uh, this was very popular at the hackathon, so, uh, very kind of happy for you to try this out. And I think since we're slowly approaching the end, I can take some questions as well. Um, you'll just kind of speak and I'll

  91. 41:55

    restate and reiterate the question because of the recording. So yeah, I'm happy to answer a few things, and we can also play around with this more if you have some query that you want to try. Um, yeah.

  92. 42:12

    So, uh, using MCP through Claude, uh, there-- um, I'm still concerned about the privacy issues, right? Because Claude is gonna consume the tokens of whatever document you might be sending off to be evaluated. How do you control-

  93. 42:29

    So it wouldn't do that basically. So the concern is around, uh, the question is around privacy. So basically, you just-- Claude would just get the redacted version of the document, so it wouldn't get the full document that you're inputting there. So that's kind of the, the setup that we have currently. So it would only see that side of things.

  94. 42:52

    But I'm saying-

  95. 42:52

    Yeah

  96. 42:52

    ... you're in Claude, you're telling it to do something-

  97. 42:55

    Yeah

  98. 42:55

    ... that's ultimately gonna go to an MCP, right? That's the step.

  99. 42:59

    Yeah.

  100. 42:59

    Claude had to make the decision to call the MCP. At some point, it will-- it could have read the data out of the file as part of its decision-making. How do you-

  101. 43:09

    Yeah. So I mean, this can be kind of evaluated, like whether this happens, like whether Claude does this kind of off, off-rails situation. Definitely, that can be kind of, uh, tested more and more. But in the test that I've done, like, uh, if you host the kind of MCP and everything else is on the virtual private cloud, um, this seemed to have worked without kind of the data leaking. But I'm sure there can be more guardrails to kind of reinforce this at that initial stage.

  102. 43:39

    Or in the worst case even, you could say, "Okay, I'm concerned I can build my own harness and use an open source." Exactly.

  103. 43:47

    Oh, yeah. I, I get that.

  104. 43:48

    Yeah, yeah. Yeah. And in that way, even, um, like you could still save on tokens and get better context even if... Like this is Claude Code in my example, but it can be any harness. If you implement the tool calling well, I think, uh, this can be done. But happy, uh, happy to get a contribution around this as well. Um, could be very useful to have this like pre-processing layer as well. Um, yeah, another-

  105. 44:16

    Yeah, yeah.

  106. 44:16

    Yeah.

  107. 44:16

    Your MCP server's on your private cloud, right?

  108. 44:18

    Yeah.

  109. 44:19

    So then you have that private data like he's talking about.

  110. 44:21

    Yeah.

  111. 44:22

    Uh, it goes through your MCP and reads the data through that, right?

  112. 44:26

    Yeah.

  113. 44:26

    That setup.

  114. 44:31

    You'd have to like advertise the existence of the file to the worker. Yeah. Zero trust, not connected to the same file system. Yeah. So it doesn't have to be.

  115. 44:39

    Mm-hmm.

  116. 44:40

    The SIE would have to pull the file down.

  117. 44:42

    Yeah, yeah. So again, the question is kind of like how do we set this up to make sure that the privacy is well preserved, right?

  118. 44:53

    Yeah, on, on your server. How is it like-

  119. 44:56

    So on, on the, on the SI- side of things?

  120. 45:00

    When I launch a cluster, how is it set up?

  121. 45:04

    So the cluster in this case is like, um, what we have, um, but that can be your own cluster. So through the repo, you can set up your own cluster in your own, uh-

  122. 45:15

    Configure however I want.

  123. 45:16

    Yes, exactly. Yeah, so you can configure the cluster in any way you want. I'm just using a managed cluster that we have for the purpose of, uh, the demo and the example, and we use that, for example, for hackathons and so on. So we host the hardware. But you can totally do this yourself, so it's self-hosted. And y- in the-- as I said, in the repo, you have the ability to do Terraform apply and have all the infrastructure set up. And if you have the GPUs and so on, you basically,

  124. 45:46

    um, yeah, have that set up and it's totally your own.

  125. 45:53

    Your, your MCP has got a file watcher?

  126. 45:56

    Sorry, again?

  127. 45:57

    Your MCP has a file watcher and reads the file?

  128. 46:00

    The-- Does the MCP have a file?

  129. 46:03

    Does it read the file? Consume the file.

  130. 46:04

    So, uh, it just sends it to the main worker and, uh, there the file is processed. So kind of there is that... Yeah.

  131. 46:23

    And yeah, you can, uh, again, I think at the entrance there is the, uh, free compute that you can get to try out. Um, again, if you want to self-host, you can still self-host. It's not, um, strict in that sense. We just do this so that things can go quicker. Um, but again, you don't have to, uh, do it in a way that you use our cluster. You can self-host.

  132. 46:57

    And yeah, we're-- O- also, you can kind of add me on LinkedIn again. We can chat there and, um, thank you for attending.