MCPcopy
hub / github.com/PennyroyalTea/gibberlink

github.com/PennyroyalTea/gibberlink @main sqlite

repository ↗ · DeepWiki ↗
152 symbols 347 edges 23 files 0 documented · 0%
README

GibberLink

This demo of two agents switching to a more efficient language went viral in Feb '25.

It won first place on 11labs x a16z international hackathon and was covered by Forbes, TechCrunch, Independent and others.

Demo

gbrl.ai — Agent2Agent conversation in your browser (use two devices)

youtube — Agents switching from english to ggwave, video:

Agents switching from english to ggwave video

Authors

Contact us: contact@gbrl.ai

Anton Pidkuiko: threads, linkedin, github

Boris Starkov: X, linkedin, github

based on ggwave library by Georgi Gerganov and conversational AI by ElevenLabs

How it works

  • Two independent conversational ElevenLabs AI agents are prompted to chat about booking a hotel (one as a caller, one as a receptionist)
  • Both agents are prompted to switch to ggwave data-over-sound protocol when they identify other side as AI, and keep speaking in english otherwise
  • This repository provides API that allows agents to use the protocol

Bonus: you can open the ggwave web demo, play the video above and see all the messages decoded!

Derived work

How to repro

https://github.com/PennyroyalTea/gibberlink/wiki/Repro-steps-for-demo

Extension points exported contracts — how you extend this code

GGWaveParameters (Interface)
(no doc)
hackathon_demo/src/types/ggwave.d.ts
GGWaveInstance (Interface)
(no doc)
hackathon_demo/src/types/ggwave.d.ts
GGWaveModule (Interface)
(no doc)
hackathon_demo/src/types/ggwave.d.ts
ButtonProps (Interface)
(no doc)
hackathon_demo/src/components/ui/button.tsx

Core symbols most depended-on inside this repo

readLatin1String
called by 16
hackathon_demo/public/ggwave/ggwave.js
throwBindingError
called by 12
hackathon_demo/public/ggwave/ggwave.js
registerType
called by 10
hackathon_demo/public/ggwave/ggwave.js
cn
called by 10
hackathon_demo/src/lib/utils.ts
tryParseAsDataURI
called by 6
hackathon_demo/public/ggwave/ggwave.js
abort
called by 5
hackathon_demo/public/ggwave/ggwave.js
embind__requireFunction
called by 5
hackathon_demo/public/ggwave/ggwave.js
sendAudioMessage
called by 5
hackathon_demo/src/utils/audioUtils.ts

Shape

Function 144
Interface 4
Method 4

Languages

TypeScript100%

Modules by API surface

hackathon_demo/public/ggwave/ggwave.js110 symbols
hackathon_demo/src/utils/audioUtils.ts13 symbols
hackathon_demo/src/types/ggwave.d.ts7 symbols
hackathon_demo/src/components/AudioMessenger.tsx6 symbols
hackathon_demo/src/components/ConvAI.tsx5 symbols
hackathon_demo/src/components/logos.tsx2 symbols
hackathon_demo/src/lib/utils.ts1 symbols
hackathon_demo/src/components/ui/button.tsx1 symbols
hackathon_demo/src/components/background-wave.tsx1 symbols
hackathon_demo/src/components/Code.tsx1 symbols
hackathon_demo/src/app/page.tsx1 symbols
hackathon_demo/src/app/layout.tsx1 symbols

Dependencies from manifests, versioned

@11labs/client0.0.7 · 1×
@eslint/eslintrc3 · 1×
@opentelemetry/api1.9.0 · 1×
@posthog/ai3.2.1 · 1×
@radix-ui/react-slot1.1.2 · 1×
@types/node20 · 1×
@types/react19 · 1×
@types/react-dom19 · 1×
audiomotion-analyzer4.5.0 · 1×
class-variance-authority0.7.1 · 1×
clsx2.1.1 · 1×
eslint9 · 1×

For agents

$ claude mcp add gibberlink \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact