100% Free · MIT Licensed .NET 10 · C# 14 · NativeAOT

Local AI for .NET.
Zero sidecars. In your process.

Language models, vision, speech synthesis, audio transcription, music, and image/video diffusion — all running directly inside your own .NET process. No Python. No llama.cpp. No background services to keep alive.

> dotnet tool install -g OpenTail.Stingray.Cli
✓ AVX2/AVX-512 SIMD ✓ Vulkan & CUDA backends ✓ Single-binary AOT ready ✓ Memory-mapped GGUF, read in place
stingray-cli — interactive console ready
echo "In one sentence, why do developers write unit tests?" | dotnet run --project samples/OpenTail.Stingray.Sample.Chat
Developers write unit tests to ensure their software components work as intended, isolate bugs, and verify functionality in a controlled environment.

✓ Qwen2.5 0.5B Instruct, CPU backend, 5.4 s in total including model load (Ryzen 7 5700G, 11 Oct 2026, one run)
The wording differs from run to run at the default temperature.
0Python or sidecar servers
3Compute backends (CPU SIMD, Vulkan, CUDA)
5+Modalities (Text, Vision, TTS, ASR, DiT)
100%Free · MIT · NativeAOT friendly
Scout & Feasibility

Will it fit? Know before you download.

stingray scout reads only a model's header and tensor index, loads no weights, and estimates the memory a CPU run needs. The table below is real scout output for real checkpoints, not a simulation. Pick your RAM.

$stingray scout -r <owner/repo> -f <file> --budget 16G -c 4096
Inspect a model, locally

Drop a GGUF here. It never leaves your browser.

This page reads the first 64 MB of the file (the header and tensor index) with JavaScript on your machine and uploads nothing. It shows what is in the file and whether Stingray admits its architecture.

Drop a .gguf file

or choose one. Nothing is sent anywhere; you can disconnect from the network and it still works.

One Engine, All Modalities

Full multimodal spectrum. Directly in C#.

Stingray eliminates the fragmented landscape of external Python servers and disparate C++ wrappers.

๐Ÿ’ฌ

Language & Reasoning

Memory-mapped GGUF models running with AVX-512 SIMD kernels, paged KV caching, speculative decoding (MTP / D-Spark), continuous batching, and schema-constrained JSON grammar decoding.

Qwen 2.5 SmolLM2 Llama
๐ŸŽจ

Image & Video Diffusion

Diffusion pipelines in managed C#. Run FLUX.1 Schnell, Stable Diffusion 1.5/3.5, Wan Video, and HunyuanVideo with accelerated VAE decoders and Real-ESRGAN upscaling.

FLUX DiT SD 3.5 Wan Video Real-ESRGAN
๐ŸŽ™๏ธ

Neural Speech & Voice

End-to-end zero-shot TTS voice cloning and ASR transcription. Supports CosyVoice 2/3, Kokoro-82M, F5-TTS, MeloTTS, Piper, Chatterbox, OpenAI Whisper, and Silero VAD.

Kokoro-82M CosyVoice 3 Whisper ASR Silero VAD
๐Ÿ‘๏ธ

Vision Understanding

Unified vision pipelines supporting multimodal image QA, document extraction, and OCR. Executes Gemma 4 Vision (gemma4v), and PaddleOCR-VL (see STATUS.md for the checked status of each).

Gemma 4 Vision PaddleOCR
๐ŸŽต

Music & Sound FX

Generate high-fidelity audio tracks and Foley sound effects using Flow-matching DiT architectures such as MiniMax Music and Stable Audio directly within your interactive applications.

MiniMax Music Stable Audio 3
โšก

Local OpenAI Server

Host instant /v1/chat/completions and Anthropic-compatible endpoints. Drop-in replacement for external servers with streaming SSE responses and NativeAOT compilation.

OpenAI Compatible Anthropic SSE In-Process Host
Clean, Idiomatic C#

A few lines of code.
Not a labyrinth of configs.

Stingray provides an ergonomic, strongly-typed .NET API with async streaming, IDisposable resource safety, and no reflection-heavy patterns (it builds under NativeAOT and trim analyzers).

using OpenTail.Stingray;
using OpenTail.Stingray.Core.Catalog;
using OpenTail.Stingray.Executors;

// 1. Resolve model path from ModelHome inventory or direct GGUF:
string modelPath = ModelHome.ResolveModelPath("qwen2.5-0.5b");

// 2. Memory-map model, allocate context, and initialize chat session:
using var model = Model.Load(modelPath);
using var context = model.CreateContext(new ContextParams { ContextSize = 4096 });
var executor = new InteractiveExecutor(context);
var session = new ChatSession(executor);

// 3. Stream generated tokens directly to your UI or console:
await foreach (string piece in session.ChatAsync("Why write unit tests?"))
{
    Console.Write(piece);
}
What you can build

Three things to make this weekend.

Each one starts from a sample in the repository that was run against real model files.

An offline tool with nothing to install

Publish your app with NativeAOT and ship one executable. The command line itself starts in about 60 ms (median 62 ms, measured 11 October 2026).

Caveats: that is start-up, not model loading. Piper voices need the ONNX Runtime native library shipped alongside. NativeAOT guide

Give your app a voice, and ears

Speak with a Piper voice and transcribe with Whisper, all on the CPU, with no cloud service in the path. On the development machine one Piper phrase ran at 0.129x real time (faster than real time).

Caveat: one phrase on one machine, not a streaming-latency guarantee. Whisper base mishears product names. Speech sample

Pull data out of private documents

Describe the record you want as a JSON schema; the output is forced to match it, and the sample checks the values against the source text. Emails, invoices and notes never leave the machine.

Caveat: the schema guarantees the shape, not the truth. A small model can fill a valid record with wrong values, which is why the sample checks. Extract sample

The catch, stated plainly

  • MIT licensed. Free for commercial use, no tool-call limits.
  • No API keys. Nothing to sign up for to run a model.
  • No account for the starter models. They download from public Hugging Face files, pinned to an exact commit and checked against a SHA-256.

What touches the network

  • Running a model does not. In the source, the network code sits in the commands you run to fetch things (setup, pull, scout -r), behind one switch.
  • Set STINGRAY_OFFLINE=1 and even those commands refuse to go online.
  • The engine has no telemetry code. Models you download keep their own licences.

Based on reading the source for network use and on the offline switch's documented behaviour; no packet capture was done. First run is dotnet tool install -g OpenTail.Stingray.Cli, then stingray setup chat (a one-time 469 MB download; how long that takes depends on your connection), then stingray chat "hello", which works offline from then on.

Measured, not claimed

Real numbers, with the dates and the gaps.

Everything here comes from the repository's own performance records, taken on one development machine: a Ryzen 7 5700G with its integrated graphics (no discrete GPU). It shows what was measured there. It says nothing about other hardware.

The same machine, one month apart

Prompt-processing speed on the Vulkan backend, about 500-token prompt, tokens per second. Older figure from 10-13 September 2026, newer from the 11 October 2026 re-run of every checkpoint (one run each).

September11 October

Source: PerformanceLeague.md, "Our-side recheck, every text-generation checkpoint, 2026-10-11". The gain comes from batched quantised matrix multiplication and flash-style prefill attention on the Vulkan path. Seven CPU rows looked slower in the same re-run; a 3-run recheck the same day showed most of that was noise (details in that file).

Against llama.cpp, CPU

Pick a model. The bars show tokens per second for llama.cpp and for Stingray on the same machine, CPU only, with a roughly 500-token prompt.

This is a selection, not a random sample: these are models where Stingray's prompt processing is at or above llama.cpp's. Across all comparable rows the medians are prompt processing 0.93x and generation 0.69x of llama.cpp, so generation is the gap, and the smallest models are the furthest behind. The complete table, with the slower rows, is in PerformanceLeague.md. llama.cpp figures are from its own llama-bench (build b8585) on 10-11 September 2026; Stingray figures are from the 11 October 2026 re-run, so the ratios are only as current as the llama.cpp numbers.

Start-up of the command line

Time from process start to exit for stingray --help, median of 9 runs, 11 October 2026. This is the CLI starting, not a model loading and not time to first token.

NativeAOT executable: 27.4 MiB. The same CLI as a normal .NET build needs the .NET 10 runtime installed. Windows only; the server host and other platforms were not measured. Source: docs/guides/native-aot-deployment.md.

What does not work yet

The honest list.

GPU

Measured on an integrated GPU only

CUDA and discrete-GPU paths exist but were not measured on this machine, so no discrete-GPU speed is claimed anywhere on this page.

FORMATS

SafeTensors language models are narrow

Only a few dense families, on the CPU, in F32, F16 or BF16. For quantised weights or a GPU, use a GGUF. stingray capabilities lists the exclusions.

OLLAMA

Point at the weight blob, not the manifest

Ollama's weight blobs are GGUF files and run directly. Pointing the CLI at Ollama's manifest file does not work yet.

STATUS

"Admitted" is not "verified everywhere"

Each family carries a verification tier, a backend list and a date in STATUS.md, and some families are marked as regressed. Read the row before you depend on one.

DIFFUSION

Image and video set-up is multi-file

Each model needs a diffusion model, a text encoder and a VAE, so there is no one-line call. Several video models are experimental.

LICENCES

Models keep their own licences

Stingray is MIT licensed and ships no weights. Each model you download comes with its own licence terms.

Engine Architecture

How Stingray works underneath.

Four modular layers designed for uncompromising efficiency, testability, and AOT compilation.

LAYER 01

Core Abstractions

Memory-mapped GGUF & SafeTensors parsers, BPE/SentencePiece tokenizers, Jinja templating, and grammar-constrained JSON schema decoders.

LAYER 02

Compute Backends

AVX2/AVX-512 vector SIMD math kernels (Q4_K/Q6_K/Q8/IQ dequantization), Vulkan compute shaders (SPIR-V pipeline cache), and cuBLAS CUDA GEMM pools.

LAYER 03

Execution Engine

Paged KV cache management, hybrid forward pass scheduling, speculative decoding (MTP / D-Spark), token sampling, and continuous batching.

LAYER 04

Domain Pipelines

Specialized multimodal runtimes: Audio (CosyVoice/Kokoro/Whisper), Diffusion (FLUX/SD3), Vision (UnifiedVision), and the CLI / Server hosts.

FAQ

Straight answers.

No marketing doublespeak — the same technical honesty we maintain across all OpenTail projects.

Is there any cost, subscription, or license fee?

None. OpenTail.Stingray is 100% free and open-source under the MIT license. You can use it in commercial applications, internal enterprise tools, or hobby projects with zero royalties and no tool-call limits. Inference runs in your process; only stingray setup and stingray pull download anything.

Do I need Python, PyTorch, or llama.cpp installed?

No. Stingray is written in managed C# (.NET 10). It parses GGUF and SafeTensors files directly and runs inference using its own AVX2/AVX-512 SIMD kernels, Vulkan compute shaders, or CUDA. The only native piece is your graphics driver (or ONNX Runtime if using ONNX-based speech engines like Piper).

Can I run models without a discrete GPU?

Yes. The CPU backend uses AVX2 and AVX-512 SIMD kernels. Furthermore, on systems with integrated graphics (such as AMD Ryzen APUs or Intel Iris), Stingray automatically dispatches compute shaders over Vulkan with shared system memory.

Is it compatible with NativeAOT single-binary publishing?

Yes. Stingray adheres to strict trimming and NativeAOT rules: no reflection-heavy patterns, source-generated JSON serializers, and zero dynamic code emission. You can publish your complete application and AI runtime as a single standalone executable.

Where do I get models?

You can use the built-in CLI: stingray setup chat automatically pulls verified, checksum-checked models into your local store. You can also pull any GGUF from Hugging Face with stingray pull -r <repo> or inspect compatibility with stingray scout.

Get Started

Ready to build with Stingray?

Choose how you want to engage — whether via terminal CLI, embedding the NuGet package, or exploring the code.

Command Line Tool

Stingray CLI

Install the global tool to chat immediately, pull verified models, and run vision or image generation from your terminal.

dotnet tool install -g OpenTail.Stingray.Cli
View on NuGet
NuGet Package

In-Process Library

Embed LLMs, diffusion, vision, and speech directly into your .NET 10 console apps, desktop tools, ASP.NET backends, or MAUI apps.

dotnet add package OpenTail.Stingray
View on NuGet
Open Source & Samples

GitHub & Recipes

Browse the samples: chat, structured JSON invoice extraction, speech in and out, and image generation.

Explore on GitHub