AGENTS / GITHUB / dotnetclaw
githubinferredactive

dotnetclaw

provenance:github:brano/dotnetclaw
WHAT THIS AGENT DOES

DotnetClaw is a personal AI assistant that helps you with coding tasks and more, all running directly on your computer. It acts as a smart helper, able to browse the web, run commands, and even interact with other coding agents like Cursor or Claude Code, all through simple language instructions. This tool solves the problem of needing multiple applications and complex workflows to manage coding projects and research. Developers, programmers, and anyone who frequently works with code would find it useful. What makes DotnetClaw special is its ability to combine various AI capabilities into one easy-to-use system, accessible through both a command line interface and a web-based dashboard.

View Source ↗First seen 1mo agoNot yet hireable
README
<p align="center">
    <img width="748" height="163" alt="image" src="https://github.com/user-attachments/assets/d20230dc-ff45-4ad1-81b8-17153eed0922" />
</p>
<p align="center">
    <img width="300" height="300" alt="logo" src="https://github.com/user-attachments/assets/b4ea5571-3ff9-409a-8781-7335777c9acb" />
</p>

# 🦀 DotnetClaw

![.NET 10](https://img.shields.io/badge/.NET-10-blueviolet)
![License: MIT](https://img.shields.io/badge/License-MIT-green)
![Semantic Kernel](https://img.shields.io/badge/Semantic%20Kernel-✓-blue)

🦀 DotnetClaw is a personal AI assistant developed in .NET framework — Semantic Kernel agents, Telegram Bot channel, Agent Skills, MCP client, Playwright browser, Cursor agent CLI integration

## What is DotnetClaw?

DotnetClaw is a self-hosted AI coding assistant that runs on your machine.
It combines **Microsoft Semantic Kernel**, **MCP (Model Context Protocol)**,
a **Telegram bot**, and a **Playwright browser** into a single .NET 10 CLI agent
that can read/write files, run shell commands, browse the web, and control your coding 
agent like Cursor or Claude Code — all from natural language.

**Supports:** OpenAI · Azure OpenAI · Anthropic Claude

## Inspiration

DotnetClaw is inspired by 🦞 [OpenClaw](https://github.com/openclaw/openclaw) (formerly Clawdbot / Moltbot)
by [Peter Steinberger](https://twitter.com/steipete) — a personal AI assistant concept
that proved how powerful a well-wired agent loop can be. This is a .NET reimagining of that idea.

## Projects

### DotnetClaw CLI
- Slash commands (/status /ask /plan /agent /cursor /claude)
- Chat and control your DotnetClaw agent from terminal
- Show chat history
- Install agent skills from DotnetClawHub (hub)

> DotnetClaw CLI running in Windows Powershell Terminal:
<img width="1109" height="332" alt="image" src="https://github.com/user-attachments/assets/8b5f45f2-4111-45d7-bd99-45b9549e778d" />

> DotnetClaw CLI running in Ubuntu bash terminal (via WSL): 
<img width="1110" height="334" alt="image" src="https://github.com/user-attachments/assets/fc9b4205-2761-4735-b80b-5ea62def1827" />

### DotnetClaw Web UI 
- Onboarding
- Dashboard
- Chat
- Skills
- Terminal UI
- Telegram channel configuration

> Web UI for DotnetClaw developed in Blazor:
<img width="1852" height="778" alt="Screenshot 2026-03-26 143759" src="https://github.com/user-attachments/assets/48686145-1936-466e-bb2c-cbffe6764d15" />

### DotnetClawHub - Hub for Agent Skills
- Create & Publish own custom (agent) skill
- Browse agent skills
- Install agent skill via API
- SKILL.md support

> Agent Skills Hub for DotnetClaw inspired by ClawHub developed in Blazor:
<img width="1288" height="521" alt="image" src="https://github.com/user-attachments/assets/2a76e17e-4efe-4d66-8b03-9de723588546" />

> Browse & search for skills:
<img width="1281" height="596" alt="image" src="https://github.com/user-attachments/assets/f804389f-7a83-4009-90ae-0b6490897069" />

> Skill details & installation:
<img width="1010" height="577" alt="image" src="https://github.com/user-attachments/assets/4f389f7c-3620-4912-8ce9-31f33fedc246" />

### Prerequisites
- [.NET 10 SDK](https://dotnet.microsoft.com/download/dotnet/10.0)
- An OpenAI API key (or Azure OpenAI / Anthropic — see providers)

### Run

```bash
# Set your API key
set OPENAI_API_KEY=sk-...

# Restore & run
cd src/DotnetClaw
dotnet run
```

### Configuration

| Environment Variable        | Description                          | Default  |
|-----------------------------|--------------------------------------|----------|
| `DOTNETCLAW_PROVIDER`       | `openai` \| `azure` \| `anthropic`   | `openai` |
| `OPENAI_API_KEY`            | OpenAI API key                       | —        |
| `AZURE_OPENAI_ENDPOINT`     | Azure OpenAI endpoint URL            | —        |
| `AZURE_OPENAI_API_KEY`      | Azure OpenAI key                     | —        |
| `AZURE_OPENAI_DEPLOYMENT`   | Azure deployment name                | Model ID |

Or edit `appsettings.json` directly.

### REPL Commands

| Command   | Action                          |
|-----------|---------------------------------|
| `help`    | Show available commands         |
| `reset`   | Clear conversation history      |
| `history` | Print full conversation history |
| `exit`    | Quit                            |

### Run Tests

```bash
cd tests/DotnetClaw.Tests
dotnet test
```

## Agentic Loop

```
User Input
    │
    ▼
ClawAgentLoop.RunTurnAsync()
    │
    ├──► ChatCompletionAgent (SK)
    │        │
    │        ├── FunctionChoiceBehavior.Auto()  ← auto tool-call selection
    │        │
    │        ├── [Tool Call] Shell.run_command
    │        ├── [Tool Call] FileSystem.read_file
    │        ├── [Tool Call] Dotnet.find_csharp_projects
    │        │        ▲
    │        │        └── results fed back into context
    │        │
    │        └── Final text response  ◄── streamed to terminal
    │
    └──► Max iterations guard (default: 20)
```

## Workspace Identity Documents

On every session start (and on `reset`), DotnetClaw loads `*.md` files from `./workspace/`
and injects them into the system prompt before any user message is sent.

```
./workspace/
├── SOUL.md      ← Who the agent is (personality, values, style)
├── AGENTS.md    ← How it uses tools and handles multi-agent flows
├── USER.md      ← Who you are (role, prefs, tech stack)
├── CONTEXT.md   ← What you're working on right now
├── MEMORY.md    ← Persistent facts you want remembered
└── *.md         ← Any additional documents, loaded alphabetically
```

**Loading order** is controlled by `WorkspaceDocumentPriority` in `appsettings.json`
(default: `SOUL → AGENTS → USER → CONTEXT → MEMORY → TOOLS → RULES`).
Remaining `*.md` files follow alphabetically.

The workspace folder is **optional** — if it doesn't exist, DotnetClaw starts with the
base system prompt only.

### REPL commands

| Command          | Action                                          |
|------------------|-------------------------------------------------|
| `workspace`      | Show loaded documents table                     |
| `ws reload`      | Force reload from disk without resetting chat   |
| `prompt`         | Print the full effective system prompt          |

### Runtime skill

The agent can query workspace docs mid-conversation via the `Workspace` plugin:
- `list_workspace_docs` — table of loaded docs
- `get_workspace_doc SOUL` — fetch a specific doc's content
- `reload_workspace` — hot-reload from disk
- `get_workspace_context` — full injected context block

---

## Skills (Plugins)

### Shell
| Function              | Description                            |
|-----------------------|----------------------------------------|
| `run_command`         | Execute any shell command              |
| `list_directory`      | Tree-style directory listing           |
| `get_working_directory` | Return current working directory     |

### FileSystem
| Function       | Description                     |
|----------------|---------------------------------|
| `read_file`    | Read a text file                |
| `write_file`   | Create or overwrite a file      |
| `append_file`  | Append to an existing file      |
| `delete_file`  | Delete a file                   |
| `file_exists`  | Check if a path exists          |
| `find_files`   | Glob search for files           |

### Dotnet
| Function                  | Description                          |
|---------------------------|--------------------------------------|
| `find_csharp_projects`    | Locate .csproj files                 |
| `summarise_csharp_file`   | Structural summary of a .cs file     |
| `get_nuget_packages`      | List NuGet packages in a .csproj     |

### Workspace
| Function                  | Description                                        |
|---------------------------|----------------------------------------------------|
| `list_workspace_docs`     | Table of all loaded identity documents             |
| `get_workspace_doc`  

[truncated…]

PUBLIC HISTORY

First discoveredMar 30, 2026

IDENTITY

inferred

Identity inferred from code signals. No PROVENANCE.yml found.

Is this yours? Claim it →

METADATA

platformgithub
first seenMar 6, 2026
last updatedMar 29, 2026
last crawled6 days ago
version

README BADGE

Add to your README:

![Provenance](https://getprovenance.dev/api/badge?id=provenance:github:brano/dotnetclaw)