Skip to main content
gist_kb gives Claude a persistent, writable memory store that survives across conversations. It wraps the GitHub Gist API, storing each entry as a private gist with a cc-- filename prefix to namespace all Reacher-managed content. Unlike in-context memory, entries written to gist_kb are available in any future session — no need to re-establish context, re-discover devices, or re-paste configuration.

How it works

Each entry is a private GitHub Gist where the main file’s name starts with cc--. The prefix is enforced automatically — if you pass title: "device-map", the gist file is created as cc--device-map. This namespacing ensures list only returns Reacher-managed entries and never clutters other gists. Operations map directly to GitHub Gist API calls:
  • list — paginate all gists and filter to those with cc-- files
  • get — fetch the full content of a gist by ID
  • create — create a new private gist
  • update — patch an existing gist’s file content
  • delete — delete a gist permanently
Requires GITHUB_TOKEN with the gist OAuth scope.

Parameters

action
string
required
The operation to perform. One of: "list", "get", "create", "update", "delete".
id
string
Gist ID. Required for get, update, and delete. Obtain from a list or create response.
title
string
Filename without the cc-- prefix — the tool adds it automatically. Required for create and update. Example: "device-map" creates a file named cc--device-map.
content
string
File content as a string. Required for create and update.
description
string
Optional gist description. Used in create. Visible in the GitHub Gists UI.

Return value

Return shape varies by action.
success
boolean
true on success.
list response
count
number
Number of matching gists found.
gists
array
Array of matching gist summaries.
get response
id
string
Gist ID.
description
string
Gist description.
created_at
string
ISO 8601 creation timestamp.
updated_at
string
ISO 8601 last-updated timestamp.
files
object
Key-value map of filename → file content string.
create response
id
string
ID of the newly created gist.
description
string
Gist description.
file
string
Full filename including the cc-- prefix.
created_at
string
ISO 8601 creation timestamp.
update response
id
string
Gist ID.
file
string
Full filename including the cc-- prefix.
updated_at
string
ISO 8601 last-updated timestamp.
delete response
id
string
ID of the deleted gist.
deleted
boolean
true on successful deletion.

Usage examples

{
  "action": "create",
  "title": "device-map",
  "content": "homelab: home NAS and media server (linux)\nprod-server: production VPS running reacher (linux)\nwin-workstation: Windows dev machine",
  "description": "Tailscale device map"
}

Common use cases

Saving a device map after first-time setup After running tailscale_status and probing SSH access for each device, save the results. Future sessions pick up the map without re-running discovery. Storing project configs Save deploy commands, environment-specific notes, or service endpoints so they’re available in any conversation without re-pasting. Persisting notes across conversations Write observations, decisions, or action items during a session. Read them back at the start of the next session to restore context. Bootstrapping with AGENT.MD The AGENT.MD file included in Reacher is a Claude-readable guide that instructs Claude to run gist_kb list at the start of each session to check for existing device maps and configs. Drop AGENT.MD into a new conversation to trigger automatic context restoration.
Use descriptive title values like "device-map", "deploy-commands", or "project-notes-reacher" so list output is self-explanatory.