A native Windows desktop AI coding agent β local-first, OpenAI-compatible, built with .NET 8 WPF.
Chat with any LLM, explore and edit your workspace, run tools in an agent loop, schedule recurring tasks, and extend with Skills & MCP β all from a polished desktop app.
Features Β· Quick Start Β· Screenshots Β· Architecture Β· Contributing Β· Docs
If Athlon Agent saves you time, consider giving it a β β it helps others discover the project.
Most AI coding assistants are either web-only or Electron-heavy. Athlon Agent is different:
| Native Windows | Real WPF UI β fast, crisp, no embedded browser for chat |
| Bring your own model | OpenAI-compatible APIs (OpenAI, DeepSeek, Ollama, LM Studio, β¦) |
| Agent loop built-in | Multi-step tool calling with filesystem, grep, glob, shell |
| Token-smart | Optional dynamic context compaction, hygiene, and MCP tool search |
| Extensible | Skills (AgentScope-style), MCP servers, sub-agents |
| Private by default | Settings, sessions, and API keys stay under your user profile (DPAPI) |
- Codex-like chat timeline with tool-call cards, reasoning display, and session history
- Multi-workspace support with file tree, in-app editor (AvalonEdit), and workspace guard
- Native Markdown rendering (MdXaml) with code-block copy, Mermaid offline preview
- Light / dark themes with consistent Indigo accent (theme conventions)
- Shared
AgentRuntime: prompt building, streaming, tool dispatch, multi-round loops - Built-in tools:
file_list,file_read,file_write,file_edit,grep_files,glob_files,execute_command - Sub-agent delegation (
call_assistant) with configurable nesting depth - Long-term memory hooks and context compaction pipeline
- Scheduled tasks β daily, interval, one-shot, or manual; per-task workspace & prompt
- Skills β YAML + Handlebars templates in
~/.athlon-agent/skills/ - MCP β server configuration UI and stdio client foundation
- Velopack packaging β Setup.exe, portable zip, intranet auto-update feed
- API keys encrypted with Windows DPAPI (not plain JSON)
- JSONL audit logs for tool calls and HTTP interactions
- GitHub Actions CI + tag-based releases
Add screenshots to
docs/images/and embed them here β PRs welcome!
Native WPF shell Β· dual themes Β· scheduled tasks Β· workspace editor
- Windows 10/11
- .NET 8 SDK
git clone https://github.com/karsonto/athlon-work.git
cd athlon-work
dotnet run --project src/Athlon.Agent.App/Athlon.Agent.App.csproj- Open Settings and set your OpenAI-compatible endpoint, model, and API key.
- Add a workspace folder the agent can read and edit.
- Start chatting β the agent will use tools to explore files on demand.
$env:ATHLON_SKIP_LICENSE = "1"
dotnet run --project src/Athlon.Agent.App/Athlon.Agent.App.csprojflowchart TB
subgraph UI["Athlon.Agent.App (WPF)"]
MW[MainWindow / MVVM]
MD[MarkdownMessageView]
SCH[SchedulerService]
end
subgraph Core["Athlon.Agent.Core"]
RT[AgentRuntime]
CMP[Context Compaction]
MEM[Memory]
end
subgraph Infra["Athlon.Agent.Infrastructure"]
LLM[OpenAI-compatible client]
TOOLS[Filesystem tools]
STORE[File storage + DPAPI]
end
subgraph Ext["Extensions"]
SK[Skills]
MCP[MCP client]
end
MW --> RT
SCH --> RT
RT --> LLM
RT --> TOOLS
RT --> SK
RT --> MCP
RT --> CMP
MW --> STORE
src/
Athlon.Agent.App/ WPF UI, view models, scheduler, themes
Athlon.Agent.Core/ Agent runtime, settings, compaction, memory
Athlon.Agent.Infrastructure/ LLM client, tools, storage, licensing
Athlon.Agent.Mcp/ MCP client foundation
Athlon.Agent.Skills/ Skill loading and Handlebars rendering
tests/
Athlon.Agent.Tests/ xUnit tests
dotnet build Athlon.Agent.slnx
dotnet test Athlon.Agent.slnxIf the app is running and locks output files:
dotnet build src/Athlon.Agent.App/Athlon.Agent.App.csproj -p:OutDir=.\artifacts\verify\out\dotnet tool install -g vpk --version 0.0.1298
.\build.bat 1.0.0Outputs under Releases/: AthlonAgent-Setup.exe, portable zip, and update nupkg. See Auto-Update for intranet deployment.
Runtime data lives under %USERPROFILE%\.athlon-agent\:
.athlon-agent/
config/ settings.json, license.lic
sessions/ conversation history (JSONL + Markdown)
skills/ SKILL.md folders
logs/ Serilog logs
credentials/ DPAPI-encrypted API keys
audit/ tool-call audit JSONL
| Setting | Description |
|---|---|
| Endpoint | OpenAI-compatible base URL |
| Model | Chat model identifier |
| API key | Stored with DPAPI locally |
| Max tokens | Optional; empty = API default |
| Tool | Purpose |
|---|---|
file_list / glob_files / grep_files |
Discover and search workspace |
file_read |
Stream-read with line limits and offset |
file_write / file_edit |
Create or patch files (with backup) |
execute_command |
Shell via cmd.exe /c (deny-list + user stop) |
Details: workspace guard, timeouts, and compaction β Context compaction.
{
"AgentTurn": {
"TimeoutMinutes": 120
}
}0 = disabled (only manual Stop ends the run). Range: 1β180 minutes.
The client checks an internal HTTP update server (not GitHub directly):
- Sync
Releases/from a GitHub Release to e.g.https://update.corp.local/athlon-agent/. - Configure
config/settings.json:
{
"Update": {
"Enabled": true,
"BaseUrl": "https://update.corp.local/athlon-agent"
}
}Or set ATHLON_UPDATE_URL. Push a tag to trigger CI release:
git tag v1.0.0
git push origin v1.0.0| Doc | Description |
|---|---|
| Theme & UI conventions | Color tokens, theme switch rules (for contributors & AI) |
| Context compaction | Dynamic compaction, hygiene, eviction |
| License tooling | RSA license generation for enterprise deployments |
Contributions are welcome β whether it's a bug fix, a new tool, UI polish, docs, or tests.
Start here: CONTRIBUTING.md β setup, architecture rules, PR checklist, and commit style.
Quick summary:
- Fork the repo and create a branch from
main - Follow existing MVVM / service patterns β keep model logic out of WPF views
- Read theme & UI conventions before UI changes
- Run
dotnet buildanddotnet testbefore opening a PR - Keep persistence file-based via
IAppPathProvider(no hardcoded%LocalAppData%)
- Add tests for
AppPathProvider, workspace guard, filesystem tools - MCP server lifecycle: connect,
tools/list,tools/call, status UI - Command execution confirmation dialog
- Session branch management
- Screenshots for the README
- Extend
AgentRuntime,AgentEnvironmentPromptBuilder, and tools β not the WPF layer - UI logic β
Athlon.Agent.App/ViewModels/ - Theme colors β palette tokens only; subscribe
ThemeChangedwhen caching brushes .pendesign files β Pencil MCP tools only
Athlon Agent ships with AD-account-bound license validation for enterprise deployments. Each license is signed (RSA-2048) and tied to a Windows domain account.
| Audience | How to run |
|---|---|
| Developers | Debug build + ATHLON_SKIP_LICENSE=1 |
| Enterprise | Issue .lic via tools/license/ |
License lookup order:
license.licnext toAthlon.Agent.App.exe%USERPROFILE%\.athlon-agent\config\license.lic
This is offline signature validation for internal compliance β not DRM. The source code is open for inspection, learning, and contribution; production use in licensed environments requires a valid license file.
- Full MCP server lifecycle (connect, list tools, call, reconnect)
- Command execution confirmation UI
- Session branching
- Richer code-block actions (diff, run)
- Optional code signing in release pipeline
- README screenshots & demo GIF
If you find Athlon Agent useful, star the repo to support the project and help other developers discover it.
Built with .NET 8 Β· WPF Β· CommunityToolkit.Mvvm Β· Serilog Β· MdXaml Β· Velopack