๐ŸŽ“

Language Classroom

Live WebRTC video lessons with Tailscale-secured P2P connections, integrated payments and the Kameleon Presenter โ€” all in one application.

๐Ÿ“น WebRTC video ๐ŸŒ Tailscale mesh ๐Ÿ’ณ Stripe ยท Alipay ยท PayPal ๐Ÿ” Enrolment DB
๐Ÿ‘ฉโ€๐Ÿซ
Teacher
โ— Live
๐Ÿง‘
Student A
โ— Connected
๐Ÿ‘ฉ
Student B
โ— Connected
๐Ÿง’
Student C
โ—‹ Joiningโ€ฆ
๐Ÿ‘ฆ
Student D
โ— Connected
๐Ÿ‘ฉโ€๐Ÿ’ผ
Student E
โ— Connected
๐Ÿง‘โ€๐ŸŽ“
Student F
โ—‹ Joiningโ€ฆ

Live Video Lessons

๐Ÿ“น

WebRTC group video โ€” 4+ participants

Low-latency full-mesh WebRTC video and audio for groups of 4 or more โ€” no central media server, no monthly cost. The Chameleon signal server (chameleon_signal.py) handles SDP and ICE relay (port 8766) and runs on Termux on Android too. The Companion app shows an adaptive grid that grows automatically as students join: 1 = full screen, 2 = side-by-side, 3 = 2+1, 4 = 2ร—2, 5+ = scrollable auto-fit grid โ€” with the teacher's local feed always in a picture-in-picture.

๐Ÿ”

Tailscale-secured connections

All peers connect through your Tailscale mesh โ€” no public IP, no port forwarding. The IDE manages ACLs, device authorisation and auth key generation without leaving the app.

๐ŸŽญ

Integrated Kameleon Presenter

Teach with the full Kameleon stage during your lesson. Students can push answers, drawings and images directly to a Stage-mode stack โ€” moderate and display in real time without switching apps.

๐Ÿ—ฃ๏ธ

Pronunciation widget

Built-in pronunciation coaching widget (pronunciation_widget.py) with phoneme-level feedback โ€” ideal for language teaching where precise articulation matters.

๐ŸŒ

LAN video fallback

When Tailscale is unavailable, lan_video.py streams video over UDP (port 47732), audio over UDP (port 47733) and collaborative diffs over WebSocket (port 47731) โ€” all on the local network.

Telecom & SIM Call Bridge

Connect app calls and real SIM phone calls into a single multi-way conversation โ€” directly from the Companion app

๐Ÿ“ž

Two kinds of call โ€” one conversation

The Companion app supports two parallel call channels: an App Call (WebRTC, peer-to-peer over Tailscale, free) and a SIM Call (standard mobile network, any phone number). You can be on a WebRTC call with a peer and simultaneously make a SIM call to a third party, then conference them together for a multi-way conversation โ€” without leaving the app.

๐Ÿ“Š

Telecom status bar

A persistent status bar at the top of the Companion app shows the live state of both channels: idle, ringing, in-call, or muted. A single glance tells you which calls are active. Each channel has independent mute and end controls โ€” ending the SIM call does not drop the app call, and vice versa.

๐Ÿ”€

Multi-way lesson flow

Useful for language lessons: put a student on a WebRTC app call, then dial a native speaker on SIM for a spontaneous real-world conversation. All three parties can hear each other. The teacher moderates via the app while Kameleon Presenter continues running on the IDE.

๐Ÿ”ด

UK call recording law โ€” all parties must be notified

Under RIPA 2000 and the Telecommunications (Lawful Business Practice) Regulations, a party recording a call may do so without the other party's consent for their own lawful use โ€” but for the recording to be admissible in court all parties must be informed before the recording begins. The Companion app displays a prominent ๐Ÿ”ด RECORDING banner to all connected participants whenever recording is active. For SIM callers, verbal notification is required at the start of the call. Voice data is personal data under GDPR and must be handled accordingly.

Payments & Enrolment

Accept payment from students worldwide before granting lesson access

๐Ÿ’ณ Stripe (GBP primary)
๐ŸŸฆ Alipay (Chinese students)
๐Ÿ…ฟ๏ธ PayPal (fallback)
๐Ÿ“š

Course & enrolment DB

Courses and student enrolments stored in ~/.chameleon/courses.db. The AI can create courses, list enrolments, check payment status and revoke access โ€” all via IDE commands.

๐Ÿ’ฐ

Multi-currency support

Stripe handles GBP payments from UK and international students. Alipay targets Chinese students paying in CNY. PayPal provides a universal fallback with broad country coverage.

๐Ÿ“ธ

WeChat screenshot payments

For students without card access, accept WeChat Pay proof-of-payment screenshots. The AI reads the image, extracts the amount and reference, and logs the manual payment against the enrolment.

๐Ÿ”—

Payment links

Generate Stripe-hosted payment links for any course. Share the link โ€” student pays โ€” enrolment is created automatically. No checkout page to build or host.

Payment Command Reference

AI CommandDescription
payment_create_courseCreate a new course with price, title and description
payment_linksGenerate Stripe payment link for a course
payment_statusCheck a student's payment and enrolment status
payment_enrolManually enrol a student (e.g. after cash payment)
payment_revokeRemove a student's enrolment access
payment_unpaidList all students with outstanding balances
payment_screenshotLog a WeChat Pay screenshot as proof of payment

Launch your online language school

Everything you need โ€” video, slides, payments and enrolment โ€” in a single desktop application.

Get in touch โ† Back to overview