Skip to content

Instantly share code, notes, and snippets.

View nazt's full-sized avatar

Nat nazt

  • Chiang Mai Maker Club
  • Chiang Mai
  • X @nazt
View GitHub Profile
@nazt
nazt / discord-fleet-tour.md
Created May 5, 2026 01:02
discord-fleet — multi-bot Discord introspection CLI in 200 lines (tree / guilds / watch / json views)

discord-fleet — multi-bot Discord introspection in 200 lines

A small CLI for the days when you have 5 Discord bots in 5 guilds and you've forgotten which one lives where. Three views: tree, guilds-grouped, watch-for-changes. Built on top of the official Discord MCP plugin's per-bot state-dir convention.


Why

I'm running a fleet of oracle bots — one per "agent" — each with its own Discord identity:

@nazt
nazt / mcp-permission-relay.md
Created May 5, 2026 00:46
How Claude Code's MCP permission notifications relay through the Discord plugin to a phone DM

Approving Claude Code from Discord — how MCP notifications relay tool permissions

When Claude Code wants to run a tool, it doesn't always have permission. If you're not at the terminal, who tells it yes or no? The answer: a JSON-RPC notification, an MCP plugin, and a Discord button. Here's the full path with every line of public code.


The setup

I run Claude Code in a tmux session on my laptop. Sometimes I'm not in front of the laptop — I'm out, on my phone, mid-meeting, anywhere. But Claude is mid-task and just hit a tool that needs my approval (Edit, Bash, anything not pre-allowlisted). What now?

@nazt
nazt / maw-wake-channels.md
Last active May 4, 2026 22:57
maw wake <bot> — auto-inject DISCORD_STATE_DIR + --channels + --dangerously-skip-permissions + --continue for autonomous Claude bots (maw-js pattern, 2026-05-04)

maw wake <bot> — One Command to Run an Autonomous Discord/Telegram Claude Bot

A small CLI design pattern that turns a 4-part wake invocation into a single word. Built into maw-js (the multi-Claude-instance manager) on 2026-05-04 across three commits.

The problem

A Claude Code instance acting as a Discord bot is not the same as Claude Code in your terminal. To run autonomously it needs:

Flag / env Why
@nazt
nazt / maw-search-gem.md
Created May 4, 2026 22:17
maw search — the hidden gem of the oracle CLI

maw search — The Hidden Gem of the Oracle CLI

"oh maw search is the gold!" — Nat, 2026-05-05

maw search <keyword> is the single-query meta-command that searches the entire oracle universe at once. Most maw users don't realize it exists. They should.

What it actually does

One query, four sources, ranked output:

@nazt
nazt / channel-archaeology-v2.md
Created May 4, 2026 15:04
🕰️ Discord Channel Config Archaeology v2 — tokens redacted + pass keychain instructions

🕰️ Discord Channel Config Archaeology — /time-travel --prove (v2)

"Timestamp is the truth" — Nat, 2026-05-04 Proved by Timekeeper Oracle from 148 jsonl evidence points v2: tokens redacted, pass keychain instructions added


Token Map (redacted — retrieve from keychain)

@nazt
nazt / channel-archaeology.md
Created May 4, 2026 15:00
🕰️ Discord Channel Config Archaeology — /time-travel --prove (148 jsonl evidence points)

🕰️ Discord Channel Config Archaeology — /time-travel --prove

"Timestamp is the truth" — Nat, 2026-05-04 Proved by Timekeeper Oracle from 148 jsonl evidence points

Executive Summary

discord-oracle created ALL channel configs in a 12-hour marathon (May 3 18:35 → May 4 11:50 ICT). But token sharing, naming chaos, orphan dirs, and a split-brain hermes config made the system "shitty."

@nazt
nazt / claude-buddy-REFERENCE.md
Created May 4, 2026 14:02
Claude Desktop Buddy — anthropics ESP32 firmware for Hardware Buddy device (correct project per Nat)

Hardware Buddy BLE Protocol

This is the wire protocol the Claude desktop apps speak over Bluetooth LE. You don't need anything from this repository to implement it. Any device that can advertise the Nordic UART Service and parse newline-delimited JSON will work: Arduino, ESP32, nRF52, a Raspberry Pi with a BLE dongle.

Enabling the bridge

The BLE bridge is off by default. In Claude for macOS or Windows:

@nazt
nazt / fireman-display.yaml
Created May 4, 2026 13:57
ESP32-S3 + Waveshare 7-inch LCD ESPHome Config (FireMan Display) — by laris-co/esphome-fw
substitutions:
device_internal_name: fireman-display
device_friendly_name: FireMan Display
esphome:
name: ${device_internal_name}
friendly_name: ${device_friendly_name}
on_boot:
priority: -100
then:
@nazt
nazt / cross-machine-code-find.md
Created May 4, 2026 13:49
Cross-Machine Code Find + Relay Skill (by Métis Oracle 🧮)
name cross-machine-code-find
description Find code/files on another machine via SSH and relay findings to a target oracle's inbox + maw notification. Use when user asks to find a project that lives on a different host (e.g., "find X on white.local", "ssh to <host> and dig <topic>", "bring code from <other-machine> to <oracle>"). Trigger phrases — "ssh to <host>", "find on <machine>", "code on white", "bring from <host>", "white.local find", "remote dig".

/cross-machine-code-find — Cross-Machine Code Discovery + Relay

Find code on another machine via SSH, then relay findings to a target oracle's inbox + ping their maw session.

When to Use

@nazt
nazt / discord-tagonly-toggle.md
Created May 4, 2026 13:45
Discord Bot Tag-Only Toggle (by Métis Oracle 🧮)

Discord Bot — Tag-Only vs Free-for-All Toggle

How to switch a Claude-Code Discord bot between "respond to all messages" and "respond only when @mentioned" — per channel, instantly, no restart.

The Setting

In ~/.claude/channels/<bot-name>/access.json, each channel entry has requireMention:

{