# dstalk — DeepSeek V4 AI Coding CLI
dstalk is a C/C++ AI coding CLI powered by DeepSeek V4 and compatible with OpenAI / Anthropic APIs, built around a dstalk-core.dll plugin host and decoupled multi-frontends.

## Why rebuild an AI coding assistant in C/C++?

dstalk is positioned alongside tools like Claude Code, OpenCode, and KiloCode, but uses a systems-language implementation and a plugin-host architecture to optimize startup time, runtime footprint, embeddability, and long-running terminal workflows.

C

### No Node.js runtime

The core is built with C11 / C++20 for fast startup and lower memory usage in long-lived terminal sessions.

ABI

### Stable C ABI

Public functions such as dstalk_init, dstalk_chat, and dstalk_file_read make it easy to embed from C/C++, Python, Rust, C#, and Go.

AI

### Compatible AI APIs

Two AI plugins ship in the box: DeepSeek and Anthropic, with OpenAI-style compatibility. Switch providers via ai.provider in config.toml.

CLI

### CLI and GUI frontends

dstalk-cli is an ANSI terminal UI; dstalk-gui is a cross-platform SDL3 window. Both share the same plugin host and core capabilities.

PLG

### Plugin host

The core only handles plugin loading, service registry, event bus, and configuration. AI, networking, LSP, and sessions are independent DLLs you can replace or extend.

OSS

### Open source and hackable

Released under GNU GPL v3.0, with example plugins, unit tests, and tutorial docs. Suitable for learning, customization, and local workflow extensions.

## Quick Start

dstalk provides an automated toolchain script and a one-command build script. Keep API keys in local config.toml or a secure environment, and never commit them to the repository.

1

### Install the local toolchain

Run setup.bat inside the tools directory to download CMake, Ninja, LLVM/Clang, and Conan2.

2

### Build dstalk

Run build.bat to install Conan dependencies, configure CMake, and build with Ninja.

3

### Start the CLI

Run build/dstalk-cli/dstalk-cli.exe with config.toml, or let it use the default config lookup.

quickstart

    # Install toolchain
    cd tools
    setup.bat

    # Return to repo root and build
    cd ..
    build.bat

    # Create config.toml
    [api]
    base_url = "https://api.deepseek.com/v1"
    api_key = "sk-xxxxxxxx"
    model = "deepseek-chat"

    # Run CLI
    build/dstalk-cli/dstalk-cli.exe config.toml

## Plugin host + decoupled multi-frontend architecture

dstalk-core.dll acts as a plugin host responsible for plugin loading, service registry, event bus, and configuration. Nine functional plugins — AI, networking, LSP, sessions, files, tools, and more — compile to standalone DLLs, while frontends reach the core only through the C ABI. The GUI is opt-in via the CMake option DSTALK_BUILD_GUI.

architecture

    ┌─────────────────────────────────────────────────────┐
    │ Frontends                                            │
    │  dstalk-cli (ANSI UI)        dstalk-gui (SDL3)       │
    └───────────────────────┬─────────────────────────────┘
                            │ C ABI
    ┌───────────────────────▼─────────────────────────────┐
    │ dstalk-core.dll  —  Plugin Host                     │
    │  Plugin Loader · Service Registry · Event Bus ·     │
    │  Config Manager                                      │
    ├───────────────┬───────────────┬─────────────────────┤
    │ deepseek (ai) │ anthropic (ai)│ network (http)       │
    │ lsp (client)  │ session       │ context              │
    │ config        │ file-io       │ tools                │
    └───────────────┴───────────────┴─────────────────────┘
       Boost.JSON · Boost.Asio / Beast · OpenSSL TLS

## Tech stack and project status

The following is based on dstalk's CMake files, Conan configuration, and public API header.

Module | Current technology | Status
--- | --- | ---
Core library | C11 / C++20, dstalk-core.dll, plugin host, public C ABI | Enabled
CLI frontend | ANSI terminal UI using dstalk/dstalk_api.h | Enabled
GUI frontend | SDL3 graphical frontend, enabled via CMake option DSTALK_BUILD_GUI | In place
Plugins | 9 functional plugins (deepseek · anthropic · network · lsp · session · context · config · file-io · tools), standalone DLLs | Enabled
Tests | 8 test files covering plugin host, event bus, service registry, plugin loader, and AI plugins, integrated with CTest | Enabled
Docs | docs/tutorial, docs/reference (commands, plugin-abi) | Published
Examples | examples/example_plugin shows a plugin template | Available
Dependencies | Conan2, boost/1.86.0, openssl/3.4.1 | Configured
Build system | CMake 3.21+, Ninja, LLVM/Clang, CMakePresets | Configured
License | GNU GPL v3.0 | Confirmed

## Common CLI commands

In addition to natural-language prompts, dstalk-cli provides commands for files, models, and session management.

Commands | Description | Example
--- | --- | ---
/help | Show help | /help
/clear | Clear the current conversation context | /clear
/model <name> | Switch the current model | /model deepseek-chat
/file read <path> | Read file content and print it to the terminal | /file read README.md
/file write <path> <content> | Write content to a file | /file write note.txt hello
/save <path> / /load <path> | Save or restore a session | /save session.json

## Public C API

dstalk-core exposes functions through dstalk-core/include/dstalk/dstalk_api.h, so frontends and third-party hosts call the same core interface.

dstalk_api.h

    int  dstalk_init(const char* config_path);
    void dstalk_destroy(void);

    void dstalk_set_api_key(const char* api_key);
    void dstalk_set_base_url(const char* base_url);
    void dstalk_set_model(const char* model);

    int  dstalk_chat(const char* input, char** output);
    int  dstalk_chat_stream(const char* input, dstalk_stream_cb cb, void* userdata);
    void dstalk_free_string(char* str);

    void dstalk_session_clear(void);
    int  dstalk_session_save(const char* path);
    int  dstalk_session_load(const char* path);

    int  dstalk_file_read(const char* path, char** content);
    int  dstalk_file_write(const char* path, const char* content);

## Roadmap

The plugin host, CLI, SDL3 GUI, nine core plugins, tests, and documentation are already in place. Future work focuses on deeper capabilities and ecosystem expansion.

Phase | Scope | Status
--- | --- | ---
Skeleton | Project skeleton, CMake/Ninja build, Conan dependencies, DLL exports, frontend main loop | Done
Plugin host | Plugin loader, service registry, event bus, configuration; 9 core plugins (deepseek · anthropic · network · lsp · session · context · config · file-io · tools) | Done
Chat capability | HTTPS networking, DeepSeek / Anthropic API adapters, streaming output, multi-turn sessions, file I/O tools | Available
GUI frontend | SDL3 graphical window (DSTALK_BUILD_GUI), sharing the same plugin host as the CLI | In progress
Next phase | Deeper LSP integration, third-party plugin SDK, cross-platform distribution, ongoing documentation | Planned

## Open source contributors welcome

dstalk is an open project. Developers interested in C/C++, terminal UX, AI API adapters, GUI, documentation, and testing are welcome to participate.

PR

### Improve the codebase

The core, CLI, SDL3 GUI, and nine plugins (AI, networking, LSP, sessions, files, tools, and more) all welcome patches; build scripts and cross-platform compatibility have headroom too.

PLG

### Build new plugins

Use examples/example_plugin and docs/reference/plugin-abi.md as a starting point — register new services through the C ABI to bring your own models, tools, or data sources into dstalk.

DOC

### Improve docs and tests

docs/tutorial and docs/reference are taking shape; help expand tutorials, command references, plugin-ABI notes, and the coverage of host_api_test / smoke_test.

Go to source repository Open an Issue

## Start in the terminal, embed dstalk everywhere

dstalk is more than a CLI. It is a local AI coding core that can be reused by multiple frontends. dstalk.top will keep tracking project progress, build instructions, and available capabilities.

View Quick Start Visit Source Repository