now with native LSP support

A terminal agent that reads your code, not just your prompt

fern wires directly into your language server, your debugger, and your git history — so it plans changes instead of guessing at them.

~/projects/fern-demo
fern plan "fix the race condition in the queue worker"
// scanning call graph, 3 files touch WorkerQueue
✓ found the unguarded read in queue.rs:118
✓ proposed fix — hashline diff ready for review
fern apply
RUST ENGINELSP / DAPGIT-AWARESUBAGENTSPLAN MODE
FEATURES

Built for real codebases, not toy demos

Every feature exists because a large, messy, real repository demanded it.

Plan mode

fern drafts a change plan before touching a file, so you approve the approach — not just the diff.

Subagents

Spin off focused subagents for research, testing, or refactors that run in parallel without polluting context.

Hindsight memory

fern remembers what it tried last time in this repo, and won't repeat a fix that already failed.

#

Hashline edits

Edits are addressed by content hash, not line number — so they still apply cleanly after upstream changes.

LSP + DAP wired in

Go-to-definition, diagnostics, and live debugging are first-class tools, not text scraped from your editor.

Time-traveling rules

Project rules can apply retroactively — flag old code against a rule you only just wrote.

WORKFLOW

Reads before it writes

Before fern proposes a change, it walks the call graph, checks type signatures through your LSP, and reviews recent commits touching that file.

  • Understands cross-file references, not just the open buffer
  • Flags breaking changes against real call sites
  • Explains its reasoning in plain English before applying anything
// fern.plan.json
{
  "target": "queue.rs:118",
  "risk": "low",
  "touches": [
    "worker.rs",
    "tests/queue_test.rs"
  ],
  "reasoning": "unguarded read..."
}

Two minutes to your first fix

Works with any git repo. No config file required to start.

curl -fsSL fern.sh/install | sh