humla AGENTS.md

humla AGENTS.md is an instructions file for Codex, OpenCode from michaelwilhelmsen/humla. It costs 6,738 tokens per session, scanned A, original, MIT.

Project instructions for Humla, a personal macOS meeting-notes app. The app records microphone and system audio, transcribes them, and combines the transcripts with typed notes into an AI summary.

In plain words
What is it for?
Use them when changing or troubleshooting Humla's recording, audio chunking, transcription, diarization, notes, or summary features. They also describe its local SQLite storage and use of personal API keys.
Why use it?
They give an agent the project context needed to work safely with its local data, audio streams, transcription flow, and architecture. This is especially useful because microphone and system audio are handled separately.

Instructions file for CodexOpenCode

Written for Codex and OpenCode: the file is AGENTS.md.

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add instructions/michaelwilhelmsen/humla/agents-md
Clone the repo
git clone --depth 1 https://github.com/michaelwilhelmsen/humla

Made for: Codex, OpenCode.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for humla AGENTS.md

README.md
[![agentmods](https://agentmods.dev/badge/instructions/michaelwilhelmsen/humla/agents-md.svg)](https://agentmods.dev/instructions/michaelwilhelmsen/humla/agents-md)
Your own site
<a href="https://agentmods.dev/instructions/michaelwilhelmsen/humla/agents-md"><img src="https://agentmods.dev/badge/instructions/michaelwilhelmsen/humla/agents-md.svg" alt="Measured on agentmods" height="20"></a>
Per session 6,738 This file is loaded in full into every session.
When invoked 6,738 The same file — it is already loaded in full.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.06738 $0.06738
Opus 5 $0.03369 $0.03369
Sonnet 5 $0.01348 $0.01348
Haiku 4.5 $0.00674 $0.00674

Measured 6d ago against content hash 8103cb782f5c, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-06, from the pricing page.

Security

Grade A, and why

humla AGENTS.md scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 6d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

AGENTS.md · 268 lines

How it starts

The opening of the file, as written. The whole thing — 268 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Humla — project notes

What this app is

Humla is a personal macOS meeting-notes app inspired by Granola. You take freeform notes during a meeting; in parallel, the app records mic + system audio, transcribes the call, and produces a structured AI summary that fuses your notes with the transcript. Built for personal/small-team use, not SaaS — your data, your API keys, local SQLite, no backend.

The name is Norwegian for "bumblebee" (think: small, hum, personal).

Core capabilities

  • Hybrid capture (parallel streams) — mic input + macOS system audio recorded simultaneously via a Swift sidecar, kept as two separate streams end-to-end (no mixdown). Each gets its own VAD-bounded chunk WAVs, its own full.wav, its own Whisper invocations with its own initial_prompt trail context, and its own diarization treatment. In-person meetings produce only mic chunks (system stays silent → no chunks emitted) and the diarizer runs on the mic stream so multiple humans in the same room get distinct labels. Remote calls produce both streams: mic chunks get tagged "You" by channel attribution (no diarize needed — every mic chunk is the same person) and system chunks get diarized for remote-side speakers.
  • Two transcription providers — pick per-note between OpenAI (Whisper / gpt-4o-transcribe / gpt-4o-mini-transcribe / gpt-4o-transcribe-diarize) or on-device Whisper via Metal.
  • Whisper quality presetFast (greedy, snappy) / Balanced (beam=3) / Quality (beam=5, low no_speech threshold) for the local provider; bundles sampling strategy + confidence thresholds together so the user picks one knob.
  • Per-note transcription language — global Settings → Language is the default for new notes; each note has its own language chip that overrides for that note.
  • Offline speaker diarization on stop — a second Swift sidecar (speaker-diarize, FluidAudio CoreML) runs after recording_stop. Uses FluidAudio's OfflineDiarizerManager (community-1 segmentation + VBx clustering with PLDA) — the upgrade from the 3.1-based streaming DiarizerManager we used initially. Branches on which streams produced content: in-person mode (mic-only) diarizes mic_full.wav and emits Speaker 1: / Speaker 2: for the room's voices; remote/hybrid mode (both streams have content) labels every mic chunk You: and runs the diarizer only on sys_full.wav to separate remote-side speakers. Picked over streaming online ID because the streaming path drifts on long recordings (the failure mode that drove the switch was a 13-min 2-speaker call producing 9 speakers) and because community-1 counts/assigns speakers more accurately on dense single-mic captures (e.g. in-person meetings where everyone shares the same acoustic context).
  • Speaker rename + colour-coded pills — each unique speaker gets one of four semantic colours from the design tokens (interactive blue, success green, warning gold, accent red, cycling for 5+). A chip strip above the transcript lets the user click any speaker to rename inline; rename is a regex line-anchored rewrite of the transcript text — no separate metadata table.
  • Two-source summaries — the model gets [Notater] (your typed notes) and [Transkripsjon] (the meeting transcript) as separate inputs, with a system prompt that tells it to favour your notes for intent and the transcript for facts.
  • Per-note presets — Meeting / 1:1 / Lecture / Interview / Brainstorm / Voice memo, each with its own summary prompt. Custom prompts also supported.
  • Custom vocabulary — a per-user list of names, tech terms, and phrases sent as part of Whisper's initial_prompt to bias decoding toward those tokens.
  • Trailing transcript context — every chunk's transcription receives the last ~150 committed words alongside the custom vocabulary as Whisper's initial_prompt, so decoding stays anchored to the conversation rather than treating each chunk as a cold start. Single biggest mitigation against silence-driven hallucinations and proper-noun drift across the meeting.
  • VAD-bounded chunks — the audio-capture sidecar rotates each chunk at natural speech pauses (min 1.0 s / max 15 s / 500 ms silence trigger) instead of a fixed timer, so chunk boundaries land mid-pause rather than mid-word.
  • Reasoning-model temperature handling — gpt-5.x and o-series models reject custom temperature; openai::summarize detects them via is_reasoning_model() and omits the parameter, while keeping temperature=0.2 for traditional chat models.
  • Folders — flat folder list, per-note assignment, search across titles/bodies/transcripts/folder names with auto-expand on hits.
  • Click-to-edit transcript — styled view by default with coloured pills + plain text; clicking enters a textarea for edits. Locked while a recording is in flight to avoid clobber.

Read the full file on GitHub · 268 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 6d ago First seen · 268 lines · 6,738 tokens per session scan A 8103cb782f5c

Subscribe to this mod's changes

humla AGENTS.md is an instructions file published in the GitHub repository michaelwilhelmsen/humla (272 stars, last pushed 2d ago), licensed MIT. It adds 6,738 tokens to every session, about $0.0337 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.