Requirements
- The .NET 10 SDK (10.0.300 or a later feature band).
- Claude Code CLI 2.1.286 or later, installed and signed in. Run
claudeonce in a terminal to sign in. SharpTurns checks the version at startup and shows an error if it's missing or older. - Optional, for dictation: a Deepgram API key and a command-line recorder:
ffmpegon macOS and Windows, orpw-recordorarecordon Linux.
SharpTurns is developed and tested mainly on macOS. It also targets Windows and Linux.
Let your CLI set it up (recommended)
The best way to get running is to have the Claude Code CLI you already use do the setup. Clone the repository:
git clone https://github.com/jerry426/sharpturns.git
cd sharpturns
Start claude in the repository folder with a capable model such as Opus 5.5 (claude --model claude-opus-5-5), and ask something like:
Check that this machine has what SharpTurns needs, install anything missing, then build it, run the tests, and start the app. After I close it, update its model list from Anthropic's models overview page.
The CLI reads the repository's AGENTS.md (through CLAUDE.md), so it knows how the project is laid out, how to build and test it, and how to update the model list. It can also install a recorder for dictation and work through platform-specific problems.
Why the model list step matters: SharpTurns starts with a fixed list of model IDs, and new models come out after each release. The CLI compares that list with Anthropic's models overview and brings it up to date. Ask it again whenever new models come out, with every SharpTurns window closed. You can also edit the list yourself in Config → Models.
Build it yourself
From the repository root:
./run.sh # macOS and Linux
./run.sh -c Release # an optimized build
dotnet run --project src/SharpTurns.App # any platform, including Windows
To run the tests:
dotnet test
By default SharpTurns runs claude from your PATH. To use another install, enter the full path to the executable in Config → Preferences. On Windows, it must be the native claude.exe, not a .cmd or shell wrapper.
The starting model list may be out of date. Check it against Anthropic's models overview in Config → Models.
Before your first turn
Turns count against your Claude plan or API usage as usual. Before you use SharpTurns, know that:
- Coding tools are preapproved. Read, Glob, Grep, Edit, Write, NotebookEdit, Bash, WebFetch, and WebSearch (plus PowerShell on Windows) run without a prompt for each call, unless an ask rule matches. Turns start in the project's folder, or the conversation's own workspace, but the tools aren't confined to it. The CLI's own safety checks still open an Allow/Deny dialog. Subagents and the
pkillandkillallcommands are denied. - You choose what asks first. In Config → Preferences → Ask before running, list Claude Code permission rules, one per line. Any tool call that matches one opens an Allow/Deny dialog before it runs. The defaults are
Bash(git commit:*)andBash(git push:*). A rule likeBash(git push:*)also matches a push chained after another command with&&. Add rules for anything else you want to approve yourself, such asBash(rm:*)orWebFetch. Ask rules in your Claude Code settings files still apply too. - MCP servers run only where you select them. Define servers in Config → MCP Servers, then select them for a conversation in Edit Conversation. Their tools run without asking. Your own CLI MCP configuration isn't used.
- Context files go with fresh sessions. Files you add in Edit Conversation are read before each turn and sent whenever a new CLI session starts. Changing one starts a new session on the next turn.
- Your CLI setup still applies. The CLI discovers the project's
CLAUDE.md(orAGENTS.md) and loads your settings files. SharpTurns overrides them to turn off hooks, auto-compact, and the fallback model.
Your data
- Everything is stored in one SQLite database,
sharpturns.db, in aSharpTurnsfolder under your local app-data directory:~/Library/Application Supporton macOS,%LOCALAPPDATA%on Windows, and~/.local/shareon Linux. That includes your conversations, the images you attach, and your settings. - The Deepgram API key is stored in plain text in that database. Anyone who can read the file can read the key.
- Turns go through the CLI. SharpTurns itself only connects to the network to send a dictation recording to Deepgram, to load images that rendered Markdown links to, and to fetch a remote file you open in the Markdown Viewer.
Dictation and the Instance Manager
Dictation
Save your Deepgram key in Config → API Keys. Then click Voice in the composer (or press Ctrl+1 / ⌘+1 in the message box) to start recording, and Stop to transcribe. The transcript goes in at the cursor, and Undo removes it. On macOS, the first recording may ask for microphone permission for the app you launched SharpTurns from.
Instance Manager
You can run several SharpTurns instances at once. The optional Instance Manager lists them, docks their windows beside its own, and launches, reloads, and ends them. Start it from the repository root:
./run-instance-manager.sh # macOS and Linux
dotnet run --project src/SharpTurns.InstanceManager.App # any platform
The README covers every option in detail.