
What Is Flare?
Flare is a local inference server designed specifically for NVIDIA SM120 and SM121 GPUs. It targets long conversations, coding agents, and workloads that repeatedly invoke tools. Its central goal is to use workstation and compact-system resources efficiently while keeping text generation responsive.

Unlike serving platforms that prioritize broad compatibility, Flare uses a focused contract built around selected models, hardware, kernels, and deployment patterns. This narrower scope allows model preparation, memory management, scheduling, and execution to be designed together.
Flare is most appropriate when its supported model recipes, prepared capacities, and NVIDIA hardware requirements match your local workload.
How the Architecture Works
Flare divides model preparation and runtime serving into two main components: Ignition and Helios.
Ignition: Build-Time Model Preparation
Ignition operates in the standard Python machine-learning ecosystem. It uses PyTorch, Transformers, and FlashInfer/b12x to load models, tune kernels, compile forward passes, and capture CUDA graphs.
The result is a prepared runtime package. Compilation and CUDA graph capture are completed before serving begins, so the production runtime does not need to perform those preparation steps.
Helios: Rust-Based Serving
Helios is the Rust runtime that serves the package produced by Ignition. It runs without Python and is responsible for scheduling, cache storage, request handling, and explicit ownership of runtime resources.
Model recipe
-> Ignition preparation
-> kernel tuning and forward compilation
-> CUDA graph capture
-> runtime package
-> Helios servingThis boundary keeps model development connected to familiar Python tools while keeping the serving runtime small and focused.
Key Features
- Focused NVIDIA support: Flare is designed for NVIDIA SM120 and SM121 GPUs rather than a broad range of accelerators.
- Python at build time: Model preparation uses PyTorch, Transformers, and FlashInfer/b12x.
- Rust at runtime: Helios serves prepared packages without Python.
- Pre-serving optimization: Kernel tuning, forward compilation, and CUDA graph capture finish before requests are served.
- Explicit memory planning: Buffers and execution capacities are planned ahead of time.
- Complete conversation state: Flare treats recurrent state and KV caches as a unified conversation state for correct reuse, branching, and resumption.
- Recipe-driven model support: Model recipes define model computation and specialize layouts or execution where necessary.
- Local-workload orientation: The system is intended for long sessions, coding agents, and repeated tool use on local machines.
Prerequisites and Setup
Before attempting to use Flare, confirm that your environment fits its intentionally narrow scope.
- Verify the GPU architecture. Flare targets NVIDIA SM120 and SM121 GPUs. The README does not claim support for other GPU architectures.
- Select a supported model recipe. Flare does not promise universal model compatibility. The model must fit an available recipe and its expected dataflow.
- Plan runtime capacities. Determine the buffer and execution capacities required for your expected conversations and requests.
- Prepare the Python build environment. Ignition relies on PyTorch, Transformers, and FlashInfer/b12x during model preparation.
- Prepare the model package. Use Ignition to load the model, tune kernels, compile forward execution, and capture CUDA graphs.
- Serve with Helios. Once preparation is complete, provide the resulting runtime package to the Rust serving runtime.
The README does not provide exact installation commands, dependency versions, or launch flags. Follow the repository’s model preparation and serving guide for the authoritative procedure. Use the CLI guide for configuration details.
Basic Usage Workflow
Flare’s basic workflow is preparation first and serving second. The following example is conceptual rather than executable CLI syntax because the README does not define specific commands.
Step 1: Choose a Compatible Model
Start with a model covered by a Flare recipe. Recipes own model computation and can reuse canonical model implementations when their dataflow fits. Where different layouts or execution behavior are required, the recipe specializes those portions.
Step 2: Decide the Required Capacities
Estimate the workload that the prepared package must support. Consider conversation length, concurrent execution needs, cache use, recurrent state, and repeated tool interactions. Flare expects important buffers and capacities to be planned before serving.
Step 3: Build the Runtime Package
Run the preparation process through Ignition. At this stage, Flare uses the Python ecosystem to perform the expensive setup work.
Input:
supported model recipe
model parameters
planned execution capacities
Ignition performs:
model loading
kernel tuning
forward compilation
CUDA graph capture
Output:
prepared runtime packageStep 4: Start Helios
Configure Helios to serve the prepared package. Helios handles request processing, scheduling, and cache storage without requiring Python in the serving runtime. Consult the CLI documentation for the actual configuration options and launch interface.
Step 5: Exercise the Intended Workload
Test Flare with realistic long conversations, coding-agent sessions, and tool-use patterns. A short synthetic prompt may not expose the same state-management, memory-traffic, or scheduling behavior as the workload for which Flare was designed.
Understanding Conversation State
Flare treats conversation state as more than a KV cache. When a model also uses recurrent state, that state must remain synchronized with the cache. Flare manages these elements as a whole so operations such as reuse, branching, and resumption preserve the complete conversation correctly.
This design is particularly relevant to agents. An agent may pause for a tool result, branch while evaluating alternatives, or resume an earlier session. Preserving only one part of the model state could produce incorrect continuation behavior.
Advanced Tips
Prepare for the Real Capacity You Need
Because execution capacities and buffers are planned ahead of time, preparation choices directly affect what can be served. Do not assume that one package is suitable for every context length, concurrency level, or model configuration. Follow the capacity rules in the project documentation.
Keep Compilation Out of the Serving Path
Allow Ignition to finish kernel tuning, forward compilation, and CUDA graph capture before starting production serving. This separation is a core part of Flare’s design rather than an optional optimization.
Treat State as an Atomic Unit
When implementing conversation reuse, branching, or resumption, preserve the complete state managed by Flare. Avoid designing integrations that assume a KV cache is always the model’s only persistent state.
Use Recipes as the Model Boundary
Put model-specific computation in model recipes and leave scheduling, request handling, and cache storage to the runtime. This follows Flare’s separation of responsibilities and helps keep the shared runtime focused.
Benchmark Against Your Actual Workload
Rust provides explicit resource ownership, but the implementation language alone does not guarantee higher inference performance. GPU computation, memory traffic, scheduling, model structure, and workload shape remain important.
For broader model, hardware, or deployment coverage, compare Flare with vLLM. Both systems can use CUDA graphs, but they make different scope and design tradeoffs. Benchmark the exact model, conversation pattern, capacity, and machine you intend to deploy.
Read the Design Documentation
For a deeper explanation of why the runtime, model recipes, state management, and scheduling boundaries are structured this way, consult the repository’s core design documentation.
Conclusion
Flare provides a specialized local inference path for selected models on NVIDIA SM120 and SM121 GPUs. Ignition prepares optimized runtime packages with familiar Python tools, while Helios serves them through a compact Rust runtime. Its strongest fit is a planned local workload involving long conversations, coding agents, repeated tool use, and explicit management of memory and conversation state.
