Getting started

Build it, sign in, start a turn

There are no prebuilt binaries. Clone the repository, then let your CLI set it up or build it yourself.

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 claude once 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: ffmpeg on macOS and Windows, or pw-record or arecord on 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 pkill and killall commands 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:*) and Bash(git push:*). A rule like Bash(git push:*) also matches a push chained after another command with &&. Add rules for anything else you want to approve yourself, such as Bash(rm:*) or WebFetch. 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 (or AGENTS.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 a SharpTurns folder under your local app-data directory: ~/Library/Application Support on macOS, %LOCALAPPDATA% on Windows, and ~/.local/share on 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.