Local desktop AI agent for voice, skills, model-flexible planning, and workstation automation.
C#
2
717 commits
updated Jul 20, 2026
Kam is a desktop AI agent for operating a workstation through voice, text, skills, and local context. It is designed to sit between a coding-agent style workflow and a daily assistant: it can plan with an OpenAI-compatible model, execute bounded desktop skills, inspect local context, and surface production-readiness evidence through an Avalonia UI.
Kam is evolving into a product-grade local agent runtime:
SKILL.md.scripts/local-production-smoke.ps1 runs restore, build, tests, AI config checks, skill smoke, publish, and optional launch.docs/production-live-readiness.md defines the manual local-live gate.docs/superpowers/plans/2026-04-30-kam-production-readiness-sprint.md tracks the release-candidate sprint.Kam.sln
src/
SmartVoiceAgent.Core/ Domain models, interfaces, DTOs
SmartVoiceAgent.Application/ CQRS commands, handlers, validators
SmartVoiceAgent.Infrastructure/ agents, skills, platform services, MCP, AI integrations
SmartVoiceAgent.CrossCuttingConcerns/ logging, exceptions, security utilities
SmartVoiceAgent.AgentHost.ConsoleApp/ headless host and skill-smoke entrypoint
SmartVoiceAgent.Mailing/ optional email/SMS infrastructure
SmartVoiceAgent.Benchmarks/ performance benchmarks
Ui/SmartVoiceAgent.Ui/ Avalonia desktop application
tests/
SmartVoiceAgent.Tests/ unit, integration, UI metadata, and smoke tests
docs/
local-production-smoke.md
production-live-readiness.md
superpowers/
scripts/
local-production-smoke.ps1
assets/
dashboard.png
plugins.png
settings.png
http://localhost:11434/v1.Optional integrations:
git clone https://github.com/Esquetta/Kam.git
cd Kam
dotnet restore Kam.sln
dotnet build Kam.sln --configuration Release
dotnet run --project src/Ui/SmartVoiceAgent.Ui/SmartVoiceAgent.Ui.csproj --configuration Release
Then open Settings > AI Runtime and configure one planner model profile. Prefer the UI for local setup because it stores user settings without exposing secret values in the repository.
Do not put API keys in committed appsettings.json files. Use the Settings UI, user secrets, or environment variables.
User-secrets example for headless smoke:
dotnet user-secrets set "AIService:Provider" "OpenAI" --project src/Ui/SmartVoiceAgent.Ui
dotnet user-secrets set "AIService:ApiKey" "your-api-key" --project src/Ui/SmartVoiceAgent.Ui
dotnet user-secrets set "AIService:ModelId" "selected-model-id" --project src/Ui/SmartVoiceAgent.Ui
dotnet user-secrets set "AIService:Endpoint" "https://api.openai.com/v1" --project src/Ui/SmartVoiceAgent.Ui
The smoke gate also accepts AIService:EndPoint for backward compatibility.
GitHub App setup for coding-agent repository discovery:
dotnet user-secrets set "GitHubApp:AppId" "<app-id>" --project src/SmartVoiceAgent.AgentHost.ConsoleApp
dotnet user-secrets set "GitHubApp:InstallationId" "<installation-id>" --project src/SmartVoiceAgent.AgentHost.ConsoleApp
dotnet user-secrets set "GitHubApp:PrivateKeyPath" "C:\secure\kam-github-app.pem" --project src/SmartVoiceAgent.AgentHost.ConsoleApp
Desktop Runtime Diagnostics reads configuration from the UI host, so set the same keys for src/Ui/SmartVoiceAgent.Ui or use environment variables such as GitHubApp__AppId, GitHubApp__InstallationId, and GitHubApp__PrivateKeyPath.
Start with read-only GitHub App permissions: Metadata, Contents, Pull requests, Issues, Actions, Checks, Commit statuses, and Dependabot alerts. Keep the PEM file outside the repository; Kam prints only configured/missing status, never PEM contents, JWTs, installation tokens, or private key paths. Runtime Diagnostics shows the repo count plus a short repository preview when list access is available.
dotnet restore Kam.sln
dotnet build Kam.sln --configuration Release
dotnet test Kam.sln --configuration Release
dotnet run --project src/SmartVoiceAgent.AgentHost.ConsoleApp --configuration Release -- --skill-smoke --summary artifacts/manual-skill-smoke.md
dotnet run --project src/SmartVoiceAgent.AgentHost.ConsoleApp --configuration Release -- --coding-agent --command "/github app"
dotnet run --project src/SmartVoiceAgent.AgentHost.ConsoleApp --configuration Release -- --coding-agent --command "/github repos"
Run the full local gate before treating a build as release-candidate quality:
.\scripts\local-production-smoke.ps1 -Configuration Release -Runtime win-x64 -RequireAiConfig
Launch the published app for hands-on verification:
.\scripts\local-production-smoke.ps1 -Configuration Release -Runtime win-x64 -RequireAiConfig -Launch
Expected release-candidate signals:
READY_FOR_LIVE_TEST after a simple command creates planner trace and skill result evidence.Kam is a local automation agent, so safety is part of the core product surface:
See SECURITY.md for reporting guidance and implementation notes.
The next release-candidate sprint is focused on:
Before sending changes:
dotnet test Kam.sln --configuration Release
.\scripts\local-production-smoke.ps1 -Configuration Release -Runtime win-x64 -RequireAiConfig
git diff --check
Keep commits scoped by product slice: runtime, UI, skills, diagnostics, docs, or release tooling.
Kam is released under the MIT License. See LICENSE.
C#
98.6%
Local desktop AI agent for voice, skills, model-flexible planning, and workstation automation.
C#
2
717 commits
updated Jul 20, 2026
Kam is a desktop AI agent for operating a workstation through voice, text, skills, and local context. It is designed to sit between a coding-agent style workflow and a daily assistant: it can plan with an OpenAI-compatible model, execute bounded desktop skills, inspect local context, and surface production-readiness evidence through an Avalonia UI.
Kam is evolving into a product-grade local agent runtime:
SKILL.md.scripts/local-production-smoke.ps1 runs restore, build, tests, AI config checks, skill smoke, publish, and optional launch.docs/production-live-readiness.md defines the manual local-live gate.docs/superpowers/plans/2026-04-30-kam-production-readiness-sprint.md tracks the release-candidate sprint.Kam.sln
src/
SmartVoiceAgent.Core/ Domain models, interfaces, DTOs
SmartVoiceAgent.Application/ CQRS commands, handlers, validators
SmartVoiceAgent.Infrastructure/ agents, skills, platform services, MCP, AI integrations
SmartVoiceAgent.CrossCuttingConcerns/ logging, exceptions, security utilities
SmartVoiceAgent.AgentHost.ConsoleApp/ headless host and skill-smoke entrypoint
SmartVoiceAgent.Mailing/ optional email/SMS infrastructure
SmartVoiceAgent.Benchmarks/ performance benchmarks
Ui/SmartVoiceAgent.Ui/ Avalonia desktop application
tests/
SmartVoiceAgent.Tests/ unit, integration, UI metadata, and smoke tests
docs/
local-production-smoke.md
production-live-readiness.md
superpowers/
scripts/
local-production-smoke.ps1
assets/
dashboard.png
plugins.png
settings.png
http://localhost:11434/v1.Optional integrations:
git clone https://github.com/Esquetta/Kam.git
cd Kam
dotnet restore Kam.sln
dotnet build Kam.sln --configuration Release
dotnet run --project src/Ui/SmartVoiceAgent.Ui/SmartVoiceAgent.Ui.csproj --configuration Release
Then open Settings > AI Runtime and configure one planner model profile. Prefer the UI for local setup because it stores user settings without exposing secret values in the repository.
Do not put API keys in committed appsettings.json files. Use the Settings UI, user secrets, or environment variables.
User-secrets example for headless smoke:
dotnet user-secrets set "AIService:Provider" "OpenAI" --project src/Ui/SmartVoiceAgent.Ui
dotnet user-secrets set "AIService:ApiKey" "your-api-key" --project src/Ui/SmartVoiceAgent.Ui
dotnet user-secrets set "AIService:ModelId" "selected-model-id" --project src/Ui/SmartVoiceAgent.Ui
dotnet user-secrets set "AIService:Endpoint" "https://api.openai.com/v1" --project src/Ui/SmartVoiceAgent.Ui
The smoke gate also accepts AIService:EndPoint for backward compatibility.
GitHub App setup for coding-agent repository discovery:
dotnet user-secrets set "GitHubApp:AppId" "<app-id>" --project src/SmartVoiceAgent.AgentHost.ConsoleApp
dotnet user-secrets set "GitHubApp:InstallationId" "<installation-id>" --project src/SmartVoiceAgent.AgentHost.ConsoleApp
dotnet user-secrets set "GitHubApp:PrivateKeyPath" "C:\secure\kam-github-app.pem" --project src/SmartVoiceAgent.AgentHost.ConsoleApp
Desktop Runtime Diagnostics reads configuration from the UI host, so set the same keys for src/Ui/SmartVoiceAgent.Ui or use environment variables such as GitHubApp__AppId, GitHubApp__InstallationId, and GitHubApp__PrivateKeyPath.
Start with read-only GitHub App permissions: Metadata, Contents, Pull requests, Issues, Actions, Checks, Commit statuses, and Dependabot alerts. Keep the PEM file outside the repository; Kam prints only configured/missing status, never PEM contents, JWTs, installation tokens, or private key paths. Runtime Diagnostics shows the repo count plus a short repository preview when list access is available.
dotnet restore Kam.sln
dotnet build Kam.sln --configuration Release
dotnet test Kam.sln --configuration Release
dotnet run --project src/SmartVoiceAgent.AgentHost.ConsoleApp --configuration Release -- --skill-smoke --summary artifacts/manual-skill-smoke.md
dotnet run --project src/SmartVoiceAgent.AgentHost.ConsoleApp --configuration Release -- --coding-agent --command "/github app"
dotnet run --project src/SmartVoiceAgent.AgentHost.ConsoleApp --configuration Release -- --coding-agent --command "/github repos"
Run the full local gate before treating a build as release-candidate quality:
.\scripts\local-production-smoke.ps1 -Configuration Release -Runtime win-x64 -RequireAiConfig
Launch the published app for hands-on verification:
.\scripts\local-production-smoke.ps1 -Configuration Release -Runtime win-x64 -RequireAiConfig -Launch
Expected release-candidate signals:
READY_FOR_LIVE_TEST after a simple command creates planner trace and skill result evidence.Kam is a local automation agent, so safety is part of the core product surface:
See SECURITY.md for reporting guidance and implementation notes.
The next release-candidate sprint is focused on:
Before sending changes:
dotnet test Kam.sln --configuration Release
.\scripts\local-production-smoke.ps1 -Configuration Release -Runtime win-x64 -RequireAiConfig
git diff --check
Keep commits scoped by product slice: runtime, UI, skills, diagnostics, docs, or release tooling.
Kam is released under the MIT License. See LICENSE.
C#
98.6%