Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -422,6 +422,21 @@ ghost sessions # list sessions stored in .ghost
ghost setup # optional: pair the device with Ghost Cloud (metadata-only sync; source code never leaves the machine)
```

**Using OpenCode?** (Mode A — real turn ids, richest context) copy the one-file
adapter into your project, then start `ghost watch` and use OpenCode as usual:

```bash
mkdir -p .opencode/plugins
curl -o .opencode/plugins/ghost.ts \
https://raw.githubusercontent.com/arko33/ghostinthecodebase/main/packages/opencode-plugin/index.ts
```

The adapter reports `turn.started` (the prompt admission — the authoritative
turn boundary) and `turn.completed` to the local recorder on
`127.0.0.1:5417/events`. No plugin? Recording still works — the filesystem
watcher + runtime probes capture everything from the outside and turns are
marked **estimated, never invented**.

## 🛠️ Stack

<details>
Expand Down
11 changes: 8 additions & 3 deletions src/components/site/LandingPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -971,13 +971,18 @@ export default function LandingPage() {
},
{
n: "02",
t: "Record a real session",
d: "Run ghost watch in your project. Any agent works: the OpenCode plugin streams events live, everyone else is captured from the filesystem + runtime probes.",
t: "Connect OpenCode (Mode A)",
d: "Copy the one-file adapter into .opencode/plugins/ghost.ts - OpenCode then reports every turn boundary to the recorder, so the timeline uses real turn ids.",
},
{
n: "03",
t: "Record any session",
d: "Run ghost watch in your project. With the plugin installed, turns stream live; with any other agent (Cursor, Claude Code, a human) the filesystem watcher + runtime probes record everything from the outside - turns marked estimated, never invented.",
},
{
n: "04",
t: "Inspect, blame, heal",
d: "Scrub the tape in the playground, read the autopsy verdict naming the turn that broke it, copy the heal prompt to your agent - or roll the file back in one click.",
d: "Scrub the tape in the playground, read the autopsy verdict naming the turn that broke it, copy the heal prompt to your agent - or roll the file back in one click. ghost setup pairs your device for metadata-only sync to Ghost Cloud.",
},
].map((s) => (
<div key={s.n} style={{ display: "flex", gap: 12, alignItems: "flex-start" }}>
Expand Down
1 change: 1 addition & 0 deletions src/components/site/Terminal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import { useInView, useReducedMotion } from "./hooks";

const COMMANDS = [
"curl -fsSL https://raw.githubusercontent.com/arko33/ghostinthecodebase/main/packages/ghost/install.sh | bash",
"curl -o .opencode/plugins/ghost.ts https://raw.githubusercontent.com/arko33/ghostinthecodebase/main/packages/opencode-plugin/index.ts",
"ghost watch --repo . --app-url http://localhost:3000",
"ghost status",
];
Expand Down
Loading