Voxta docs
DevelopersModules

Quickstart

Your first Voxta module — from empty folder to loaded DLL.

This page walks you from nothing to a module Voxta loads and shows in its services list. The example module does nothing useful — once it loads, follow the Configuration UI and Service types pages to make it do real work, or jump straight to the Elite Dangerous reference module for a full implementation.

Prerequisites

  • .NET 10 SDK (download)
  • A working Voxta Server installation
  • An IDE (Rider, Visual Studio, or VS Code with the C# Dev Kit)

1. Create the project

dotnet new classlib -n Voxta.Modules.Hello -f net10.0
cd Voxta.Modules.Hello

2. Replace the .csproj

<Project Sdk="Microsoft.NET.Sdk">

    <PropertyGroup>
        <TargetFramework>net10.0</TargetFramework>
        <ImplicitUsings>enable</ImplicitUsings>
        <Nullable>enable</Nullable>
        <RootNamespace>Voxta.Modules.Hello</RootNamespace>
    </PropertyGroup>

    <ItemGroup>
        <PackageReference Include="Voxta.Sdk.Modules" Version="1.5.1" />
        <PackageReference Include="Voxta.Model" Version="1.5.1" />
    </ItemGroup>

</Project>

The two NuGet packages give you everything you need to register a module and use the framework types. See SDK packages for the full catalog.

3. Write VoxtaModule.cs

Delete the auto-generated Class1.cs and create VoxtaModule.cs:

using Microsoft.Extensions.DependencyInjection;
using Voxta.Abstractions.Modules;
using Voxta.Abstractions.Registration;
using Voxta.Model.Shared;

namespace Voxta.Modules.Hello;

public class VoxtaModule : IVoxtaModule
{
    public void Configure(IVoxtaModuleBuilder builder)
    {
        builder.Register(new ServiceDefinition
        {
            ServiceName = "Hello",
            Label = "Hello, Voxta",
            Experimental = true,
            Pricing = ServiceDefinitionPricing.Free,
            Hosting = ServiceDefinitionHosting.Builtin,
            Supports = new Dictionary<ServiceTypes, ServiceDefinitionCategoryScore>
            {
                { ServiceTypes.ChatAugmentations, ServiceDefinitionCategoryScore.Low }
            }
        });
    }
}

That's the minimum viable module. It registers a service named Hello that supports chat augmentations but doesn't implement any — useful only to verify Voxta picks it up.

4. Build

dotnet build -c Release

Output ends up in bin/Release/net10.0/Voxta.Modules.Hello.dll.

5. Install

Copy the DLL into the Modules/ subfolder of your Voxta install (the folder containing Voxta.Server.exe). Create the folder if it doesn't exist:

<Voxta install folder>/
└── Modules/
    └── Voxta.Modules.Hello.dll

Restart Voxta. Open the services page — Hello, Voxta should appear in the list with the Experimental badge.

See Installing a module for dependency handling and troubleshooting.

What next

The module is loaded but does nothing. Pick a service type and implement it:

  • ChatAugmentations — inject context into the conversation, listen for events, expose actions to the LLM. The Elite Dangerous module is the canonical example.
  • TextGen — bring your own LLM provider.
  • TextToSpeech / SpeechToText — bring your own voice tech.

See the full list at Service types, then read the voxta-module-elite-dangerous source to see each pattern applied in a real module.

On this page