Skip to content

faw01/feather

Repository files navigation

feather

Use your Claude Code subscription as an interview coder. A stealth desktop overlay that captures your screen, transcribes the interviewer, and streams back what to say and what to code.

One persistent Claude session sees every screenshot and hears every question. Press a shortcut, and it responds with an approach, working code, and what to say next. Invisible to screen shares and proctoring tools.

macOS only. Requires a Claude Code subscription and a free Deepgram API key.

Demo

demo

How it works

  1. You join a video call. Feather sits on top, hidden from screen capture.
  2. Deepgram transcribes both the interviewer (system audio) and you (mic).
  3. Press Cmd+H. Feather screenshots the coding problem and sends it to Claude.
  4. Claude streams back a split view: talking points on the left, syntax-highlighted code on the right.
  5. Press Cmd+J for a quick hint. A forked session returns 1-2 sentences you can say out loud.
  6. Press Cmd+Enter to re-solve with everything Claude has learned so far.

The overlay never resets. Every screenshot and transcript feeds the same conversation.

Setup

bun install
bun run dev

On first launch, the setup screen prompts for your Deepgram API key (free at console.deepgram.com) and checks Claude Code auth. You can also configure effort level and thinking mode.

Press Cmd+, to reopen settings at any time.

Shortcuts

Key What it does
Cmd+H Screenshot the problem, solve it
Cmd+Enter Re-solve with accumulated context
Cmd+J Quick hint. something to say right now
Cmd+Shift+[ / ] Browse previous responses
Cmd+\ Show or hide the overlay
Cmd+, Settings
Cmd+Shift+Arrows Move the window
Cmd+Shift+Q Quit

Stack

App Electron 41, React 19, Tailwind 4
Architecture Effect v4. services, layers, Ref, Queue, Stream
AI Claude Agent SDK. persistent session, fork, MCP tools
Audio Deepgram Flux STT, ScreenCaptureKit Swift recorder
Build bun, turborepo
Test vitest, @effect/vitest
Platform macOS only (ScreenCaptureKit, Swift)
Package electron-builder (DMG)

Project structure

apps/desktop/
  src/main.ts          entry point. session, shortcuts, audio pipeline
  src/preload.ts       IPC bridge
  src/renderer/        React overlay (SetupScreen, HintOverlay, App)
  src/layers/          Effect live layers
  src/services/        Effect service interfaces and test layers
  src/tools/           MCP tools (show_code, show_diagram)
  src/prompts/         system prompts (interview, code, system-design)
  swift/               ScreenCaptureKit audio recorder
  tests/               vitest

packages/shared/       Schema types. errors, audio, pipeline stages
packages/design-system/ UI components

Architecture

Session. A single query() call with streamInput mode. Messages enter through an Effect.Queue fed as an AsyncIterable. The session stays open for the entire interview.

Tools. show_code and show_diagram are MCP tools registered on a local server. Claude calls them to push code or diagrams to the overlay's right panel.

Fork. Cmd+J forks the session (forkSession: true) for a one-turn query. The fork copies all context without changing the main conversation.

Stealth. Content protection on, always-on-top at screen-saver level, click-through with mouse forwarding, hidden from dock and mission control, process name set to a random system utility.

Settings. Stored in ~/Library/Application Support/Feather/settings.json. Deepgram API key, effort level, and thinking mode. Changes to effort and thinking require a restart.

Commands

bun run dev          # vite + electron
bun run build        # swift + vite + electron-builder
bun run test         # vitest
bun run typecheck    # tsc
bun run check        # biome

Disclaimer

This tool is for learning and practice. You are responsible for how you use it and for following any rules that apply to your situation. This project does not encourage dishonesty.

License

AGPL-3.0

About

claude code for coding interviews

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages