Velocity Local Services: an app for running LLMs locally on Windows and Linux. Load any GGUF model and chat with web search, tools and schematics, let it use your computer by voice, and serve it to opencode, Hermes or any app through an OpenAI-compatible API and MCP. Context up to 32M tokens. No cloud.
See the code
One app to load any GGUF model and work with it: chat with web search and tools, voice, pictures, computer use - and an OpenAI-compatible API and MCP for every other app you use. Its context reaches far past the model's window: up to 32M tokens. Nothing leaves the machine.
A real VLS window: the question is looked up first, the pages are read, and the answer cites them.
▶ Watch VLS in action (YouTube)
Install · Velocity Context · Benchmarks · Technical report · Release notes · veloresearch.com
@ to attach a file or pick a context, / commands, and a token counter as the window fills. MoreComputer use and the island are Windows only for now. Full notes: VLS 0.1.1 Preview 3 · all releases
| Start | Why VLS · Install · Questions |
| Memory | Velocity Context · Measured, not claimed |
| Use it | Chat · Computer use · The island · Look inside the model |
| Connect | Studio, Plugins and Apps · Use it from the agent you already have · One address for everything |
| Yours | Make it yours · See it · Built on |
Most local runners load a model and give you its window. VLS does that too, and adds what sits around the model: a context far larger than the window, tools the model can use, a computer it can operate with your permission, and a way to see how it wrote each answer.
One command. No account, no sign-in, no telemetry, no Docker.
Windows - download VLSSetup.exe, or:
irm https://github.com/Veloresearch/velocity-local-services/releases/latest/download/install.ps1 | iex
Linux - download the x64 build (a Vulkan build is beside it), or:
curl -fsSL https://github.com/Veloresearch/velocity-local-services/releases/latest/download/install.sh | sh
The installer looks at the machine before it downloads anything and takes the build that suits it - CUDA where there is an NVIDIA card, Vulkan on Linux where there is any card at all, the processor otherwise - and opens the panel when it is done. Updates install themselves from Settings. Removing it is deleting one folder; your models and memories live somewhere else.
| Graphics card | Optional. A 6 GB card runs a 4B model with every layer on the card; the processor build works everywhere. |
| Windows installer | The preview is not code-signed yet. If SmartScreen stops it, choose More info → Run anyway. |
| Linux | Builds are packaged and tested less than Windows. Computer use and the island are Windows only for now. |
| Every build | On the releases page, with the notes for the latest. |

A model's window is a hard limit paid for in memory. Velocity Context gives the model something to reach into instead of a bigger window: you add material once - a folder, a repository, your notes, or simply the conversation as it happens - and every question after that can reach all of it, up to 32M tokens.
.mfyc file you own, built in seconds, outliving any model you load.| context | one-time build | answer, median | answer, p90 |
|---|---|---|---|
| 1M tokens | 0.5 s | 703 ms | 890 ms |
| 10M tokens | 5.3 s | 570 ms | 1 081 ms |
| 20M tokens | 10.6 s | 708 ms | 1 117 ms |
| 32M tokens | 17.2 s | 653 ms | 1 111 ms |

How it was measured, what the controls were and where the results stop are in the technical report (PDF, 14 pages). The method itself we keep to ourselves.
One laptop: RTX 3060 Laptop, 6 GB, Qwen3.5-4B-Q4_K_M, an 8 192-token window.
NVIDIA's RULER, on their harness, nothing underneath it modified:
| 4k | 16k | 32k | 64k | 128k | |
|---|---|---|---|---|---|
| 13-task average | 100.0 | 74.8 | 85.5 | 89.1 | 86.9 |
Beyond 128k, on our own ladder with the same task definitions - reported separately, never averaged in:
| 1M | 5M | 10M | 15M | 20M | 25M | 32M | |
|---|---|---|---|---|---|---|---|
| nine-task average | 97.8 | 95.6 | 100 | 97.8 | 97.8 | 100 | 100 |
The per-task tables, the samples per cell and the parts that do not flatter us are in the technical report. Every benchmark can be run on your own machine from the panel.
Text, photos and files, voice with live transcription, and a model that looks things up before it answers.
Search first, with sources. A question about a part number, a price, a datasheet or anything recent is searched before the model writes a word. You watch the pages being read, and every claim in the answer points back to its source.
Exact maths. A built-in calculator works with units, constants and radio and circuit formulas, and shows every step. The model does not do arithmetic in its head.
![]() Calculator - the expression, every step and the result, then the answer | ![]() Charts - drawn from the numbers in the answer, with the data one tab away |
Drawings for electronics. Schematics are checked before you see them: every pin connected, every value in range. Pin-outs, wiring diagrams and antenna aiming are drawn the same way, and a schematic exports to KiCad.
![]() Schematic - a relay driven from a 3.3 V pin, sized and checked | ![]() Pin-out - looked up in the datasheet, then drawn |
A Python sandbox. The model writes and runs Python in the page - with numpy, pandas and matplotlib, and no internet needed - and the files it makes appear as cards you can open or save.

Everything an answer needs around it. Save any answer as PDF, Markdown or an image. See what it cost: time to first words, writing speed, tokens read and written, and how much of the window it used. Find anything in a long conversation with Ctrl+F.
![]() Save as - PDF, Markdown or an image | ![]() Answer details - what one answer took |
![]() / commands - load a model, set thinking, start voice | ![]() @ mentions - attach a file or answer from a context |
Enter sends, Shift+Enter starts a new line, Esc stops, ↑ edits your last message. Long pasted text becomes a chip with its size in tokens.
Your local model can open apps, click, type and fill in forms. It reads each window's buttons and fields directly instead of guessing from pixels, and falls back to a screenshot for apps that do not describe themselves.
![]() |
Its own cursor. A calm second pointer shows where it is going and what it is doing. Your mouse stays yours. You decide how much it may do. Watch only, Ask every time, Ask before risky actions (the default), or Act without asking. It is off until you turn it on. You can always stop it. Esc, Stop, or pushing the mouse into the top-left corner halts it at once. Pause, Take over and Continue hand control back and forth. |
Measured. Tested with Qwen3.5-4B on Notepad and Calculator tasks: 4 of 4 passed. Reading a window takes 40-120 ms, and an action takes about half a second.
![]() Permission - four levels, one switch | ![]() Screen - which display it works on |
Computer use is new and Windows only. Start with Ask before risky actions, and check what matters.
A small bar at the top of the screen, hidden until you need it. Chat without opening VLS, pick up a conversation, talk, choose a context, or watch what VLS is doing.

Open it by holding the pointer at the top edge of the screen, pressing the shortcut (Alt+Space by default, changeable in Settings), or dragging a file to the top of the screen. It hides in full-screen apps and games.
![]() Chat - a quick question, without opening VLS | ![]() History - every chat, searchable |
![]() Talk - say a task; say "stop" to stop it | ![]() Activity - the current step, with Pause, Take over and Stop |
![]() Approvals - Allow, Deny, or allow for this task | ![]() ![]() While VLS works - a live bar for answers, downloads, loading and tasks |

How the last answer was written, one token at a time: what the model chose, how sure it was, and what it nearly said. Then the model itself - every layer, read straight from its file.

![]() Weights - every layer, brighter where the weights are larger | ![]() Shape - how the model is built, as its file describes it |
The weight pictures above are drawn from sample data for this page; in VLS they come from the model you have loaded.
| Studio | Images and video from local diffusion models, speech in over a hundred Piper voices, all on this machine. |
| Models | Search Hugging Face from the panel; each build is checked against your card before it downloads. |
| Plugins | Any MCP server - a folder, GitHub, a database - with one-click presets. Switched-on plugins offer their tools in Chat. |
| Apps | One-press connection for opencode and Hermes Agent; the address for everything else. |
| Mesh | Every machine in your house as one - a model too big for one card is split across them. |
![]() Studio - pictures, video and speech | ![]() Models - what fits your card, before it downloads |
![]() Plugins - MCP servers, started and watched by VLS | ![]() Apps - connect an agent in one press |
Open Apps in the panel and press Connect beside the agent you use:
| what Connect does | ||
|---|---|---|
| opencode | adds VLS as a normal provider in ~/.config/opencode/opencode.json and makes it the model opencode starts with | |
| Hermes Agent | points ~/.hermes/config.yaml at VLS as its custom endpoint, keeping your previous model to put back |
Not an MCP plug-in and not a bridge: VLS is the model provider itself, the same way a cloud API would be.
The next time the agent starts, it is talking to the model on your machine. Disconnect removes exactly what Connect added; nothing else in those files is touched, and a backup is kept the first time.
For anything else that speaks the OpenAI API - Continue, Cline, LangChain, your own script:
Base URL http://127.0.0.1:11500/v1
API key anything (none is needed from this computer)
Model velocity (or any name - it reaches the loaded model)
What the agent remembers. Every application gets its own memory without anyone setting it up, and a coding agent gets one per project - it says which folder it is working in, and VLS keeps that project's memory apart from the others. A new chat in the same project picks up where the last one left off; a different repository starts clean. Each app can be switched to one shared memory, or to remembering nothing, on its card.
# chat
curl http://127.0.0.1:11500/v1/chat/completions -H "content-type: application/json" \
-d '{"model":"velocity","messages":[{"role":"user","content":"hello"}]}'
# speech - any installed voice, or the default for OpenAI voice names
curl http://127.0.0.1:11500/v1/audio/speech -H "content-type: application/json" \
-d '{"input":"Hello from this computer.","voice":"en_US-ryan-high"}' -o hello.wav
# listening
curl http://127.0.0.1:11500/v1/audio/transcriptions -F [email protected]
# pictures
curl http://127.0.0.1:11500/v1/images/generations -H "content-type: application/json" \
-d '{"prompt":"a small orange cube with a face, pixel art","size":"512x512"}'
from openai import OpenAI
client = OpenAI(base_url="http://127.0.0.1:11500/v1", api_key="local")
print(client.chat.completions.create(model="velocity",
messages=[{"role": "user", "content": "hello"}]).choices[0].message.content)
From another machine on your network the same address works with the key from the panel's API page.
Home and the sidebar, arranged your way. Drag widgets by their handles, change their size, add or take off what you do not use. The sidebar shows what you choose, in your order, under your headings.
![]() Arranging Home | ![]() Sidebar |
Themes. Dark, Slate, Light and Cream, or follow the system, with nine accents.
![]() Light | ![]() Appearance |
Your account. A name for the greeting, and an optional password that has to be typed before the panel opens. Apps keep working with the API key; the password only guards the panel.
Backups and restore. Everything VLS keeps - chats, preferences, service settings, contexts - in one file you can store anywhere, on a schedule if you like, and put back on a new machine.
![]() Lock screen | ![]() Data - back up and restore |
![]() Voice & audio - microphone and speaker, tested in place | ![]() System - what the machine has and what is using it |
A window or a browser. VLS opens in its own window. The same panel works in any browser on this computer at http://127.0.0.1:11500.
▶ Watch VLS in action (YouTube) - or take the short tour from Settings › General › Guided tour once it is installed.
Every picture on this page is a capture of the real VLS panel, filled with sample conversations, models and contexts.
VLS is a router with Velocity Context behind it. The memory, the routing, the hardware fit, the mesh and the panel are ours. llama.cpp (MIT) runs the GGUF models, stable-diffusion.cpp the pictures, Piper and faster-whisper the voice - their licences travel inside every package.
Does anything leave my machine? No. The only outbound requests are the ones you ask for: searching Hugging Face, searching the web from Chat, downloading what you chose, and checking for a newer release. No telemetry, no account.
Do I need a GPU? No. A card makes it faster; the processor build works everywhere.
Which models work? Any GGUF that llama.cpp runs, Piper voices, and diffusion models for Studio.
How can a 4B model with an 8K window answer across 32M tokens? Velocity Context, which is not RAG and not a bigger window. What we measured, and how, is in the technical report; the method itself we keep to ourselves.
Which model should I use for computer use? It was tested with Qwen3.5-4B on a 6 GB card, on Notepad and Calculator tasks. Whatever the model, it is held to the permission level you chose.
Can I turn web search off? Yes, in Chat's Tools menu. With it off, only questions that are plainly about today are looked up, and the Search button always searches.
Does the island work on Linux? Not yet. The island and computer use are Windows only in Preview 3; the rest of VLS runs on both.
Is it open source? No. VLS is free for personal use; companies need a licence - write to [email protected]. See LICENSE.
Is it finished? It is a preview. When you find a rough edge, open an issue - it is the fastest way to get it fixed.
Made by Velocity · local runtimes and long-context execution
veloresearch.com · Technical report · Releases · Issues · @velo_research · [email protected]
Velocity Local Services: an app for running LLMs locally on Windows and Linux. Load any GGUF model and chat with web search, tools and schematics, let it use your computer by voice, and serve it to opencode, Hermes or any app through an OpenAI-compatible API and MCP. Context up to 32M tokens. No cloud.
See the code
One app to load any GGUF model and work with it: chat with web search and tools, voice, pictures, computer use - and an OpenAI-compatible API and MCP for every other app you use. Its context reaches far past the model's window: up to 32M tokens. Nothing leaves the machine.
A real VLS window: the question is looked up first, the pages are read, and the answer cites them.
▶ Watch VLS in action (YouTube)
Install · Velocity Context · Benchmarks · Technical report · Release notes · veloresearch.com
@ to attach a file or pick a context, / commands, and a token counter as the window fills. MoreComputer use and the island are Windows only for now. Full notes: VLS 0.1.1 Preview 3 · all releases
| Start | Why VLS · Install · Questions |
| Memory | Velocity Context · Measured, not claimed |
| Use it | Chat · Computer use · The island · Look inside the model |
| Connect | Studio, Plugins and Apps · Use it from the agent you already have · One address for everything |
| Yours | Make it yours · See it · Built on |
Most local runners load a model and give you its window. VLS does that too, and adds what sits around the model: a context far larger than the window, tools the model can use, a computer it can operate with your permission, and a way to see how it wrote each answer.
One command. No account, no sign-in, no telemetry, no Docker.
Windows - download VLSSetup.exe, or:
irm https://github.com/Veloresearch/velocity-local-services/releases/latest/download/install.ps1 | iex
Linux - download the x64 build (a Vulkan build is beside it), or:
curl -fsSL https://github.com/Veloresearch/velocity-local-services/releases/latest/download/install.sh | sh
The installer looks at the machine before it downloads anything and takes the build that suits it - CUDA where there is an NVIDIA card, Vulkan on Linux where there is any card at all, the processor otherwise - and opens the panel when it is done. Updates install themselves from Settings. Removing it is deleting one folder; your models and memories live somewhere else.
| Graphics card | Optional. A 6 GB card runs a 4B model with every layer on the card; the processor build works everywhere. |
| Windows installer | The preview is not code-signed yet. If SmartScreen stops it, choose More info → Run anyway. |
| Linux | Builds are packaged and tested less than Windows. Computer use and the island are Windows only for now. |
| Every build | On the releases page, with the notes for the latest. |

A model's window is a hard limit paid for in memory. Velocity Context gives the model something to reach into instead of a bigger window: you add material once - a folder, a repository, your notes, or simply the conversation as it happens - and every question after that can reach all of it, up to 32M tokens.
.mfyc file you own, built in seconds, outliving any model you load.| context | one-time build | answer, median | answer, p90 |
|---|---|---|---|
| 1M tokens | 0.5 s | 703 ms | 890 ms |
| 10M tokens | 5.3 s | 570 ms | 1 081 ms |
| 20M tokens | 10.6 s | 708 ms | 1 117 ms |
| 32M tokens | 17.2 s | 653 ms | 1 111 ms |

How it was measured, what the controls were and where the results stop are in the technical report (PDF, 14 pages). The method itself we keep to ourselves.
One laptop: RTX 3060 Laptop, 6 GB, Qwen3.5-4B-Q4_K_M, an 8 192-token window.
NVIDIA's RULER, on their harness, nothing underneath it modified:
| 4k | 16k | 32k | 64k | 128k | |
|---|---|---|---|---|---|
| 13-task average | 100.0 | 74.8 | 85.5 | 89.1 | 86.9 |
Beyond 128k, on our own ladder with the same task definitions - reported separately, never averaged in:
| 1M | 5M | 10M | 15M | 20M | 25M | 32M | |
|---|---|---|---|---|---|---|---|
| nine-task average | 97.8 | 95.6 | 100 | 97.8 | 97.8 | 100 | 100 |
The per-task tables, the samples per cell and the parts that do not flatter us are in the technical report. Every benchmark can be run on your own machine from the panel.
Text, photos and files, voice with live transcription, and a model that looks things up before it answers.
Search first, with sources. A question about a part number, a price, a datasheet or anything recent is searched before the model writes a word. You watch the pages being read, and every claim in the answer points back to its source.
Exact maths. A built-in calculator works with units, constants and radio and circuit formulas, and shows every step. The model does not do arithmetic in its head.
![]() Calculator - the expression, every step and the result, then the answer | ![]() Charts - drawn from the numbers in the answer, with the data one tab away |
Drawings for electronics. Schematics are checked before you see them: every pin connected, every value in range. Pin-outs, wiring diagrams and antenna aiming are drawn the same way, and a schematic exports to KiCad.
![]() Schematic - a relay driven from a 3.3 V pin, sized and checked | ![]() Pin-out - looked up in the datasheet, then drawn |
A Python sandbox. The model writes and runs Python in the page - with numpy, pandas and matplotlib, and no internet needed - and the files it makes appear as cards you can open or save.

Everything an answer needs around it. Save any answer as PDF, Markdown or an image. See what it cost: time to first words, writing speed, tokens read and written, and how much of the window it used. Find anything in a long conversation with Ctrl+F.
![]() Save as - PDF, Markdown or an image | ![]() Answer details - what one answer took |
![]() / commands - load a model, set thinking, start voice | ![]() @ mentions - attach a file or answer from a context |
Enter sends, Shift+Enter starts a new line, Esc stops, ↑ edits your last message. Long pasted text becomes a chip with its size in tokens.
Your local model can open apps, click, type and fill in forms. It reads each window's buttons and fields directly instead of guessing from pixels, and falls back to a screenshot for apps that do not describe themselves.
![]() |
Its own cursor. A calm second pointer shows where it is going and what it is doing. Your mouse stays yours. You decide how much it may do. Watch only, Ask every time, Ask before risky actions (the default), or Act without asking. It is off until you turn it on. You can always stop it. Esc, Stop, or pushing the mouse into the top-left corner halts it at once. Pause, Take over and Continue hand control back and forth. |
Measured. Tested with Qwen3.5-4B on Notepad and Calculator tasks: 4 of 4 passed. Reading a window takes 40-120 ms, and an action takes about half a second.
![]() Permission - four levels, one switch | ![]() Screen - which display it works on |
Computer use is new and Windows only. Start with Ask before risky actions, and check what matters.
A small bar at the top of the screen, hidden until you need it. Chat without opening VLS, pick up a conversation, talk, choose a context, or watch what VLS is doing.

Open it by holding the pointer at the top edge of the screen, pressing the shortcut (Alt+Space by default, changeable in Settings), or dragging a file to the top of the screen. It hides in full-screen apps and games.
![]() Chat - a quick question, without opening VLS | ![]() History - every chat, searchable |
![]() Talk - say a task; say "stop" to stop it | ![]() Activity - the current step, with Pause, Take over and Stop |
![]() Approvals - Allow, Deny, or allow for this task | ![]() ![]() While VLS works - a live bar for answers, downloads, loading and tasks |

How the last answer was written, one token at a time: what the model chose, how sure it was, and what it nearly said. Then the model itself - every layer, read straight from its file.

![]() Weights - every layer, brighter where the weights are larger | ![]() Shape - how the model is built, as its file describes it |
The weight pictures above are drawn from sample data for this page; in VLS they come from the model you have loaded.
| Studio | Images and video from local diffusion models, speech in over a hundred Piper voices, all on this machine. |
| Models | Search Hugging Face from the panel; each build is checked against your card before it downloads. |
| Plugins | Any MCP server - a folder, GitHub, a database - with one-click presets. Switched-on plugins offer their tools in Chat. |
| Apps | One-press connection for opencode and Hermes Agent; the address for everything else. |
| Mesh | Every machine in your house as one - a model too big for one card is split across them. |
![]() Studio - pictures, video and speech | ![]() Models - what fits your card, before it downloads |
![]() Plugins - MCP servers, started and watched by VLS | ![]() Apps - connect an agent in one press |
Open Apps in the panel and press Connect beside the agent you use:
| what Connect does | ||
|---|---|---|
| opencode | adds VLS as a normal provider in ~/.config/opencode/opencode.json and makes it the model opencode starts with | |
| Hermes Agent | points ~/.hermes/config.yaml at VLS as its custom endpoint, keeping your previous model to put back |
Not an MCP plug-in and not a bridge: VLS is the model provider itself, the same way a cloud API would be.
The next time the agent starts, it is talking to the model on your machine. Disconnect removes exactly what Connect added; nothing else in those files is touched, and a backup is kept the first time.
For anything else that speaks the OpenAI API - Continue, Cline, LangChain, your own script:
Base URL http://127.0.0.1:11500/v1
API key anything (none is needed from this computer)
Model velocity (or any name - it reaches the loaded model)
What the agent remembers. Every application gets its own memory without anyone setting it up, and a coding agent gets one per project - it says which folder it is working in, and VLS keeps that project's memory apart from the others. A new chat in the same project picks up where the last one left off; a different repository starts clean. Each app can be switched to one shared memory, or to remembering nothing, on its card.
# chat
curl http://127.0.0.1:11500/v1/chat/completions -H "content-type: application/json" \
-d '{"model":"velocity","messages":[{"role":"user","content":"hello"}]}'
# speech - any installed voice, or the default for OpenAI voice names
curl http://127.0.0.1:11500/v1/audio/speech -H "content-type: application/json" \
-d '{"input":"Hello from this computer.","voice":"en_US-ryan-high"}' -o hello.wav
# listening
curl http://127.0.0.1:11500/v1/audio/transcriptions -F [email protected]
# pictures
curl http://127.0.0.1:11500/v1/images/generations -H "content-type: application/json" \
-d '{"prompt":"a small orange cube with a face, pixel art","size":"512x512"}'
from openai import OpenAI
client = OpenAI(base_url="http://127.0.0.1:11500/v1", api_key="local")
print(client.chat.completions.create(model="velocity",
messages=[{"role": "user", "content": "hello"}]).choices[0].message.content)
From another machine on your network the same address works with the key from the panel's API page.
Home and the sidebar, arranged your way. Drag widgets by their handles, change their size, add or take off what you do not use. The sidebar shows what you choose, in your order, under your headings.
![]() Arranging Home | ![]() Sidebar |
Themes. Dark, Slate, Light and Cream, or follow the system, with nine accents.
![]() Light | ![]() Appearance |
Your account. A name for the greeting, and an optional password that has to be typed before the panel opens. Apps keep working with the API key; the password only guards the panel.
Backups and restore. Everything VLS keeps - chats, preferences, service settings, contexts - in one file you can store anywhere, on a schedule if you like, and put back on a new machine.
![]() Lock screen | ![]() Data - back up and restore |
![]() Voice & audio - microphone and speaker, tested in place | ![]() System - what the machine has and what is using it |
A window or a browser. VLS opens in its own window. The same panel works in any browser on this computer at http://127.0.0.1:11500.
▶ Watch VLS in action (YouTube) - or take the short tour from Settings › General › Guided tour once it is installed.
Every picture on this page is a capture of the real VLS panel, filled with sample conversations, models and contexts.
VLS is a router with Velocity Context behind it. The memory, the routing, the hardware fit, the mesh and the panel are ours. llama.cpp (MIT) runs the GGUF models, stable-diffusion.cpp the pictures, Piper and faster-whisper the voice - their licences travel inside every package.
Does anything leave my machine? No. The only outbound requests are the ones you ask for: searching Hugging Face, searching the web from Chat, downloading what you chose, and checking for a newer release. No telemetry, no account.
Do I need a GPU? No. A card makes it faster; the processor build works everywhere.
Which models work? Any GGUF that llama.cpp runs, Piper voices, and diffusion models for Studio.
How can a 4B model with an 8K window answer across 32M tokens? Velocity Context, which is not RAG and not a bigger window. What we measured, and how, is in the technical report; the method itself we keep to ourselves.
Which model should I use for computer use? It was tested with Qwen3.5-4B on a 6 GB card, on Notepad and Calculator tasks. Whatever the model, it is held to the permission level you chose.
Can I turn web search off? Yes, in Chat's Tools menu. With it off, only questions that are plainly about today are looked up, and the Search button always searches.
Does the island work on Linux? Not yet. The island and computer use are Windows only in Preview 3; the rest of VLS runs on both.
Is it open source? No. VLS is free for personal use; companies need a licence - write to [email protected]. See LICENSE.
Is it finished? It is a preview. When you find a rough edge, open an issue - it is the fastest way to get it fixed.
Made by Velocity · local runtimes and long-context execution
veloresearch.com · Technical report · Releases · Issues · @velo_research · [email protected]