Provision Twilio numbers, SMS/MMS, and AI outbound calls. An agent skill from Luciole-Studio/Misaka-Agent.

MITAuto-check: notesBackend & APIs

Install Telephony

skills CLI
$ npx skills add Luciole-Studio/Misaka-Agent --skill telephony -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install Luciole-Studio/Misaka-Agent telephony --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/Luciole-Studio/Misaka-Agent.git skills-src && mkdir -p .claude/skills && cp -r skills-src/misaka/core/skills/assets/optional/productivity/telephony .claude/skills/telephony && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
telephony
GitHub stars
158
Used in
1 other repo
Token cost
~3.2k tokens
SKILL.md length
1,409 words
Files
2 (incl. scripts)
Skills in repo
77
Repo updated
First seen
Licence
MIT

At a glance

Provision Twilio numbers, SMS/MMS, and AI outbound calls. An agent skill from Luciole-Studio/Misaka-Agent.

  • Works in 4 steps: "I want Hermes to own a real phone number" → "I only need the easiest outbound AI… → "I want the best conversational AI voice… → …
  • Backend & APIs work in your project
  • SKILL.md covers What this solves, Safety rules — mandatory, Decision tree — which service… and Files and persistent state, plus 8 more sections
  • Runs Python scripts from its folder; calls python; needs TWILIO_AUTH_TOKEN and BLAND_API_KEY

What it does

Telephony is an agent skill from Luciole-Studio/Misaka-Agent. Provision Twilio numbers, SMS/MMS, and AI outbound calls.

Its SKILL.md is about 3.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including scripts (for example `scripts/telephony.py`).

It sits in Backend & APIs. It works with Twilio. The repository describes itself as: A multi-agent research system for the humanities and social sciences. The licence is MIT.

When your agent uses it

  • Backend & APIs work in your project

Example prompts

  • “/telephony”

Requirements

  • Python 3
  • A credential in TWILIO_AUTH_TOKEN
  • A credential in BLAND_API_KEY

Workflow steps

4 steps, taken from the step headings in SKILL.md.

  1. "I want Hermes to own a real phone number"
  2. "I only need the easiest outbound AI phone call right now"
  3. "I want the best conversational AI voice quality"
  4. "I want to call with a custom prerecorded voice message"

What it can do on your machine

Read from SKILL.md and the folder at commit 3bcf7a3. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 1 file in scripts/ (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • python

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • twilio.com
    • dashboard.vapi.ai
    • docs.vapi.ai

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • TWILIO_AUTH_TOKEN
    • BLAND_API_KEY
    • VAPI_API_KEY

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Telephony loads about 3.2k tokens when it runs. Until then it costs about 17 tokens; SKILL.md has 1,409 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~17
When it runs · the whole SKILL.md, loaded when a task matches
~3.2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NoteMentions a .env fileSKILL.md:20
    dentials into `${HERMES_HOME:-~/.hermes}/.env`
  • NoteMentions a .env fileSKILL.md:107
    ### `${HERMES_HOME:-~/.hermes}/.env`
  • NoteMentions a .env fileSKILL.md:244
    save it into `${HERMES_HOME:-~/.hermes}/.env` + state:
  • NoteMentions a .env fileSKILL.md:406
    hat number to `${HERMES_HOME:-~/.hermes}/.env`

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from Luciole-Studio/Misaka-Agent at commit 3bcf7a3, republished under its MIT licence (© Luciole-Studio). 1,409 words, ~3,195 tokens.

Download SKILL.mdSave it as .claude/skills/telephony/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
telephony
description
Provision Twilio numbers, SMS/MMS, and AI outbound calls.
version
1.0.0
author
Nous Research
license
MIT
platforms
linux, macos, windows

Telephony — Numbers, Calls, and Texts without Core Tool Changes

This optional skill gives Hermes practical phone capabilities while keeping telephony out of the core tool list.

It ships with a helper script, scripts/telephony.py, that can:

  • save provider credentials into ${HERMES_HOME:-~/.hermes}/.env
  • search for and buy a Twilio phone number
  • remember that owned number for later sessions
  • send SMS / MMS from the owned number
  • poll inbound SMS for that number with no webhook server required
  • make direct Twilio calls using TwiML <Say> or <Play>
  • import the owned Twilio number into Vapi
  • place outbound AI calls through Bland.ai or Vapi

What this solves

This skill is meant to cover the practical phone tasks users actually want:

  • outbound calls
  • texting
  • owning a reusable agent number
  • checking messages that arrive to that number later
  • preserving that number and related IDs between sessions
  • future-friendly telephony identity for inbound SMS polling and other automations

It does not turn Hermes into a real-time inbound phone gateway. Inbound SMS is handled by polling the Twilio REST API. That is enough for many workflows, including notifications and some one-time-code retrieval, without adding core webhook infrastructure.

Safety rules — mandatory

  1. Always confirm before placing a call or sending a text.
  2. Never dial emergency numbers.
  3. Never use telephony for harassment, spam, impersonation, or anything illegal.
  4. Treat third-party phone numbers as sensitive operational data:
    • do not save them to Hermes memory
    • do not include them in skill docs, summaries, or follow-up notes unless the user explicitly wants that
  5. It is fine to persist the agent-owned Twilio number because that is part of the user's configuration.
  6. VoIP numbers are not guaranteed to work for all third-party 2FA flows. Use with caution and set user expectations clearly.

Decision tree — which service to use?

Use this logic instead of hardcoded provider routing:

1) "I want Hermes to own a real phone number"

Use Twilio.

Why:

  • easiest path to buying and keeping a number
  • best SMS / MMS support
  • simplest inbound SMS polling story
  • cleanest future path to inbound webhooks or call handling

Use cases:

  • receive texts later
  • send deployment alerts / cron notifications
  • maintain a reusable phone identity for the agent
  • experiment with phone-based auth flows later
2) "I only need the easiest outbound AI phone call right now"

Use Bland.ai.

Why:

  • quickest setup
  • one API key
  • no need to first buy/import a number yourself

Tradeoff:

  • less flexible
  • voice quality is decent, but not the best
3) "I want the best conversational AI voice quality"

Use Twilio + Vapi.

Why:

  • Twilio gives you the owned number
  • Vapi gives you better conversational AI call quality and more voice/model flexibility

Recommended flow:

  1. Buy/save a Twilio number
  2. Import it into Vapi
  3. Save the returned VAPI_PHONE_NUMBER_ID
  4. Use ai-call --provider vapi
4) "I want to call with a custom prerecorded voice message"

Use Twilio direct call with a public audio URL.

Why:

  • easiest way to play a custom MP3
  • pairs well with Hermes text_to_speech plus a public file host or tunnel

Files and persistent state

The skill persists telephony state in two places:

${HERMES_HOME:-~/.hermes}/.env

Used for long-lived provider credentials and owned-number IDs, for example:

  • TWILIO_ACCOUNT_SID
  • TWILIO_AUTH_TOKEN
  • TWILIO_PHONE_NUMBER
  • TWILIO_PHONE_NUMBER_SID
  • BLAND_API_KEY
  • VAPI_API_KEY
  • VAPI_PHONE_NUMBER_ID
  • PHONE_PROVIDER (AI call provider: bland or vapi)
~/.hermes/telephony_state.json

Used for skill-only state that should survive across sessions, for example:

  • remembered default Twilio number / SID
  • remembered Vapi phone number ID
  • last inbound message SID/date for inbox polling checkpoints

This means:

  • the next time the skill is loaded, diagnose can tell you what number is already configured
  • twilio-inbox --since-last --mark-seen can continue from the previous checkpoint

Locate the helper script

After installing this skill, locate the script like this:

bash
SCRIPT="$(find ~/.hermes/skills -path '*/telephony/scripts/telephony.py' -print -quit)"

If SCRIPT is empty, the skill is not installed yet.

Install

This is an official optional skill, so install it from the Skills Hub:

bash
hermes skills search telephony
hermes skills install official/productivity/telephony

Provider setup

Twilio — owned number, SMS/MMS, direct calls, inbound SMS polling

Sign up at:

Then save credentials into Hermes:

bash
python "$SCRIPT" save-twilio ACXXXXXXXXXXXXXXXXXXXXXXXXXXXX your_auth_token_here

Search for available numbers:

bash
python "$SCRIPT" twilio-search --country US --area-code 702 --limit 5

Buy and remember a number:

bash
python "$SCRIPT" twilio-buy "+17025551234" --save-env

List owned numbers:

bash
python "$SCRIPT" twilio-owned

Set one of them as the default later:

bash
python "$SCRIPT" twilio-set-default "+17025551234" --save-env
# or
python "$SCRIPT" twilio-set-default PNXXXXXXXXXXXXXXXXXXXXXXXXXXXX --save-env
Bland.ai — easiest outbound AI calling

Sign up at:

Save config:

bash
python "$SCRIPT" save-bland your_bland_api_key --voice mason
Vapi — better conversational voice quality

Sign up at:

Save the API key first:

bash
python "$SCRIPT" save-vapi your_vapi_api_key

Import your owned Twilio number into Vapi and persist the returned phone number ID:

bash
python "$SCRIPT" vapi-import-twilio --save-env

If you already know the Vapi phone number ID, save it directly:

bash
python "$SCRIPT" save-vapi your_vapi_api_key --phone-number-id vapi_phone_number_id_here

Diagnose current state

At any time, inspect what the skill already knows:

bash
python "$SCRIPT" diagnose

Use this first when resuming work in a later session.

Common workflows

A. Buy an agent number and keep using it later
  1. Save Twilio credentials:
bash
python "$SCRIPT" save-twilio AC... auth_token_here
  1. Search for a number:
bash
python "$SCRIPT" twilio-search --country US --area-code 702 --limit 10
  1. Buy it and save it into ${HERMES_HOME:-~/.hermes}/.env + state:
bash
python "$SCRIPT" twilio-buy "+17025551234" --save-env
  1. Next session, run:
bash
python "$SCRIPT" diagnose

This shows the remembered default number and inbox checkpoint state.

B. Send a text from the agent number
bash
python "$SCRIPT" twilio-send-sms "+15551230000" "Your deployment completed successfully."

With media:

bash
python "$SCRIPT" twilio-send-sms "+15551230000" "Here is the chart." --media-url "https://example.com/chart.png"
C. Check inbound texts later with no webhook server

Poll the inbox for the default Twilio number:

bash
python "$SCRIPT" twilio-inbox --limit 20

Only show messages that arrived after the last checkpoint, and advance the checkpoint when you're done reading:

bash
python "$SCRIPT" twilio-inbox --since-last --mark-seen

This is the main answer to “how do I access messages the number receives next time the skill is loaded?”

Show full SKILL.md (561 more words)Show less
D. Make a direct Twilio call with built-in TTS
bash
python "$SCRIPT" twilio-call "+15551230000" --message "Hello! This is Hermes calling with your status update." --voice Polly.Joanna
E. Call with a prerecorded / custom voice message

This is the main path for reusing Hermes's existing text_to_speech support.

Use this when:

  • you want the call to use Hermes's configured TTS voice rather than Twilio <Say>
  • you want a one-way voice delivery (briefing, alert, joke, reminder, status update)
  • you do not need a live conversational phone call

Generate or host audio separately, then:

bash
python "$SCRIPT" twilio-call "+155****0000" --audio-url "https://example.com/briefing.mp3"

Recommended Hermes TTS -> Twilio Play workflow:

  1. Generate the audio with Hermes text_to_speech.
  2. Make the resulting MP3 publicly reachable.
  3. Place the Twilio call with --audio-url.

Example agent flow:

  • Ask Hermes to create the message audio with text_to_speech
  • If needed, expose the file with a temporary static host / tunnel / object storage URL
  • Use twilio-call --audio-url ... to deliver it by phone

Good hosting options for the MP3:

  • a temporary public object/storage URL
  • a short-lived tunnel to a local static file server
  • any existing HTTPS URL the phone provider can fetch directly

Important note:

  • Hermes TTS is great for prerecorded outbound messages
  • Bland/Vapi are better for live conversational AI calls because they handle the real-time telephony audio stack themselves
  • Hermes STT/TTS alone is not being used here as a full duplex phone conversation engine; that would require a much heavier streaming/webhook integration than this skill is trying to introduce
F. Navigate a phone tree / IVR with Twilio direct calling

If you need to press digits after the call connects, use --send-digits. Twilio interprets w as a short wait.

bash
python "$SCRIPT" twilio-call "+18005551234" --message "Connecting to billing now." --send-digits "ww1w2w3"

This is useful for reaching a specific menu branch before handing off to a human or delivering a short status message.

G. Outbound AI phone call with Bland.ai
bash
python "$SCRIPT" ai-call "+15551230000" "Call the dental office, ask for a cleaning appointment on Tuesday afternoon, and if they do not have Tuesday availability, ask for Wednesday or Thursday instead." --provider bland --voice mason --max-duration 3

Check status:

bash
python "$SCRIPT" ai-status <call_id> --provider bland

Ask Bland analysis questions after completion:

bash
python "$SCRIPT" ai-status <call_id> --provider bland --analyze "Was the appointment confirmed?,What date and time?,Any special instructions?"
H. Outbound AI phone call with Vapi on your owned number
  1. Import your Twilio number into Vapi:
bash
python "$SCRIPT" vapi-import-twilio --save-env
  1. Place the call:
bash
python "$SCRIPT" ai-call "+15551230000" "You are calling to make a dinner reservation for two at 7:30 PM. If that is unavailable, ask for the nearest time between 6:30 and 8:30 PM." --provider vapi --max-duration 4
  1. Check result:
bash
python "$SCRIPT" ai-status <call_id> --provider vapi

Suggested agent procedure

When the user asks for a call or text:

  1. Determine which path fits the request via the decision tree.
  2. Run diagnose if configuration state is unclear.
  3. Gather the full task details.
  4. Confirm with the user before dialing or texting.
  5. Use the correct command.
  6. Poll for results if needed.
  7. Summarize the outcome without persisting third-party numbers to Hermes memory.

What this skill still does not do

  • real-time inbound call answering
  • webhook-based live SMS push into the agent loop
  • guaranteed support for arbitrary third-party 2FA providers

Those would require more infrastructure than a pure optional skill.

Pitfalls

  • Twilio trial accounts and regional rules can restrict who you can call/text.
  • Some services reject VoIP numbers for 2FA.
  • twilio-inbox polls the REST API; it is not instant push delivery.
  • Vapi outbound calling still depends on having a valid imported number.
  • Bland is easiest, but not always the best-sounding.
  • Do not store arbitrary third-party phone numbers in Hermes memory.

Verification checklist

After setup, you should be able to do all of the following with just this skill:

  1. diagnose shows provider readiness and remembered state
  2. search and buy a Twilio number
  3. persist that number to ${HERMES_HOME:-~/.hermes}/.env
  4. send an SMS from the owned number
  5. poll inbound texts for the owned number later
  6. place a direct Twilio call
  7. place an AI call via Bland or Vapi

References

© Luciole-Studio, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file (scripts) in misaka/core/skills/assets/optional/productivity/telephony of Luciole-Studio/Misaka-Agent.

  • SKILL.md
  • scripts/telephony.py

Open the folder on GitHubat commit 3bcf7a3

Used in 1 other repository

We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in Luciole-Studio/Misaka-Agent, which our catalogue first saw on October 7, 2026.

Compare with similar skills

Telephony next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Telephony compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Telephony this skillLuciole-Studio/Misaka-Agent1581 repos~3.2kAutomated safety check: NotesMIT
Twilio Communicationsdavila7/claude-code-templates32k5 repos~2.3kAutomated safety check: PassMIT
TelephonyTommy-yw/RunbookHermes5461 repos~3.2kAutomated safety check: NotesMIT
Twilio Communicationssickn33/agentic-awesome-skills47k2 repos~453Automated safety check: PassMIT
Twilio Setupvellum-ai/vellum-assistant1.4k—~3.7kAutomated safety check: PassMIT
Clawringdavepoon/buildwithclaude3.6k—~994Automated safety check: PassMIT

Similar skills

  • Twilio Communications

    davila7/claude-code-templates

    Build communication features with Twilio: SMS messaging, voice calls, WhatsApp Business API, and user verification (2FA).

    32k GitHub starsUsed in 5 repos~2.3k tokens
    Backend & APIsAuto-check passed
  • Telephony

    Tommy-yw/RunbookHermes

    Give Hermes phone capabilities without core tool changes. An agent skill from Tommy-yw/RunbookHermes.

    546 GitHub starsUsed in 1 repo~3.2k tokens
    Backend & APIsAuto-check: notes
  • Twilio Communications

    sickn33/agentic-awesome-skills

    Build communication features with Twilio: SMS messaging, voice calls, WhatsApp Business API, and user verification (2FA).

    47k GitHub starsUsed in 2 repos~453 tokens
    Backend & APIsAuto-check passed
  • Twilio Setup

    vellum-ai/vellum-assistant

    Configure Twilio credentials and phone numbers for voice calls

    1.4k GitHub stars~3.7k tokensUpdated today
    Backend & APIsAuto-check passed
  • Clawring

    davepoon/buildwithclaude

    Phone calling skill for OpenClaw: agent makes real outbound phone calls to users for alerts, briefings, reminders, and urgent notifications.

    3.6k GitHub stars~994 tokensUpdated today
    Backend & APIsAuto-check passed
  • Twilio

    LeoYeAI/openclaw-master-skills

    Twilio API integration with managed OAuth. An agent skill from LeoYeAI/openclaw-master-skills.

    2.2k GitHub stars~4.2k tokensUpdated 2 mo ago
    Backend & APIsAuto-check passed

More from Luciole-Studio/Misaka-Agent

All 77 skills in this repo
  • Kanban Video Orchestrator

    Luciole-Studio/Misaka-Agent

    Plan and run multi-agent video production pipelines. An agent skill from Luciole-Studio/Misaka-Agent.

    158 GitHub starsUsed in 2 repos~2.4k tokens
    Auto-check: notes
  • Ast Grep

    Luciole-Studio/Misaka-Agent

    AST-aware structural code search and rewrite via ast-grep. An agent skill from Luciole-Studio/Misaka-Agent.

    158 GitHub starsUsed in 1 repo~3.2k tokens
    Auto-check passed
  • Drug Discovery

    Luciole-Studio/Misaka-Agent

    Drug discovery: ChEMBL search, drug-likeness, interactions. An agent skill from Luciole-Studio/Misaka-Agent.

    158 GitHub starsUsed in 1 repo~2.2k tokens
    Auto-check passed
  • Fitness Nutrition

    Luciole-Studio/Misaka-Agent

    Workout planning, macros, and body metrics via wger/USDA. An agent skill from Luciole-Studio/Misaka-Agent.

    158 GitHub starsUsed in 1 repo~2.4k tokens
    Auto-check passed
  • Hyperframes

    Luciole-Studio/Misaka-Agent

    Render MP4/WebM videos from HTML compositions. An agent skill from Luciole-Studio/Misaka-Agent.

    158 GitHub starsUsed in 1 repo~3.9k tokens
    Auto-check passed
  • Osint Investigation

    Luciole-Studio/Misaka-Agent

    Follow the money via public records and sanctions data. An agent skill from Luciole-Studio/Misaka-Agent.

    158 GitHub starsUsed in 1 repo~2.9k tokens
    Auto-check passed

Works with

Categories

Questions about Telephony

What does Telephony do?

Provision Twilio numbers, SMS/MMS, and AI outbound calls. An agent skill from Luciole-Studio/Misaka-Agent. Telephony is an agent skill from Luciole-Studio/Misaka-Agent. Provision Twilio numbers, SMS/MMS, and AI outbound calls.

When should I use Telephony?

Telephony fits situations like: backend & APIs work in your project.

How do I install Telephony in Claude Code?

Run `npx skills add Luciole-Studio/Misaka-Agent --skill telephony -a claude-code`. Or copy the skill folder (misaka/core/skills/assets/optional/productivity/telephony in Luciole-Studio/Misaka-Agent) into .claude/skills/telephony in your project. Claude Code loads it when a task matches its description.

How do I install Telephony in Codex?

Run `npx skills add Luciole-Studio/Misaka-Agent --skill telephony -a codex`. Or copy the skill folder (misaka/core/skills/assets/optional/productivity/telephony in Luciole-Studio/Misaka-Agent) into .agents/skills/telephony in your project. Codex loads it when a task matches its description.

Can I use Telephony in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Luciole-Studio/Misaka-Agent --skill telephony -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/telephony, .gemini/skills/telephony, .github/skills/telephony and .opencode/skills/telephony in your project.

What does Telephony need to run?

Going by SKILL.md and its folder, Telephony needs Python for the scripts in its folder, the command-line tools its instructions call (python) and credentials named TWILIO_AUTH_TOKEN, BLAND_API_KEY and VAPI_API_KEY. Our summary lists: Python 3; A credential in TWILIO_AUTH_TOKEN; A credential in BLAND_API_KEY.

Does Telephony access the network?

SKILL.md names 3 domains. As links in the text: twilio.com, dashboard.vapi.ai and docs.vapi.ai. This is read from the text; nothing was executed.

Is Telephony safe to install?

Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Telephony use?

Telephony is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Telephony use?

About 3.2k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Telephony?

Skills that share tags, products or a category with Telephony: Twilio Communications (davila7/claude-code-templates, 32k stars), Telephony (Tommy-yw/RunbookHermes, 546 stars), Twilio Communications (sickn33/agentic-awesome-skills, 47k stars) and Twilio Setup (vellum-ai/vellum-assistant, 1.4k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Telephony?

Luciole-Studio (a GitHub organization) maintains it in Luciole-Studio/Misaka-Agent, which has 158 GitHub stars. The repository holds 77 skills in this directory. The repository was last updated on October 8, 2026.

Source: Luciole-Studio/Misaka-Agent on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.