jitsi-meet
CLAUDE.md30k starsChanged 3 months agoApache-2.0View on GitHub
- Reads credentials
We split this CLAUDE.md into the rules it gives an agent
25 rules. About 0 are common, 17 are distinctive, and 8 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈17
Distinctive · estimate
This author's own choices. Worth a look.
8
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- could be automatic: a setting could enforce it
- Very specific: line 118
Test files are located in tests/specs/ and use page objects in tests/pageobjects/.
- Very specific: line 125
Create feature directory under react/features/[feature-name]/
- Distinctive: line 126
Follow the standard file structure (actionTypes, actions, reducer, etc.)
- Distinctive: line 129
Use platform-specific files for web/native differences
- Distinctive: line 130
Add feature-specific logger for debugging
- Very specific: line 133
Check for existing .any.ts, .web.ts, .native.ts variants
- Distinctive: line 134
Follow established action-reducer-middleware patterns
- Distinctive: line 135
Use existing base utilities rather than creating new ones
- Very specific: line 150
Use moduleSuffixes in TypeScript config to handle platform-specific imports
- Very specific: line 151
Check tsconfig.web.json and tsconfig.native.json for platform-specific exclusions
- Very specific: line 167
All code must pass npm run lint:ci and npm run tsc:ci with 0 warnings before committing
- Distinctive: line 170
Prefer TypeScript for new features, convert existing JavaScript when possible
- Distinctive: line 175
Follow Conventional Commits with mandatory scopes:
- Distinctive: line 184
When adding new features:
- Distinctive: line 197
All new features must be written in TypeScript
- Very specific: line 199
Import middleware in react/features/app/middlewares.{any,native,web}.js
- Distinctive: line 200
Import reducers in appropriate registry files
- Distinctive: line 218
Test with 2 participants (P2P mode)
- Distinctive: line 219
Test with 3+ participants (JVB mode)
- Distinctive: line 220
Verify audio/video in both modes
- Distinctive: line 221
Test mobile apps if changes affect mobile
- Distinctive: line 222
Check that TLS certificate chain is complete for mobile app compatibility
- Distinctive: line 229
Use the tests from tests/ directory to verify functionality across platforms
- Very specific: line 233
Use different backend with WEBPACK_DEV_SERVER_PROXY_TARGET environment variable
- Distinctive: line 234
Check firewall settings if local development fails
≈ “Common” is an estimate: at least 1 in 5 of the 25,680 CLAUDE.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Development Commands
Building and Development
npm run lint-fix- Automatically fix linting issuesnpm run tsc:ci- Run TypeScript checks for both web and native platformsnpm run tsc:web- TypeScript check for web platform onlynpm run tsc:native- TypeScript check for native platform onlynpm run lint:ci- Run ESLint without type checkingmake dev- Start development server with webpack-dev-servermake compile- Build production bundlesmake clean- Clean build directorymake all- Full build (compile + deploy)
Testing
npm test- Run full test suite using WebDriverIOnpm run test-single -- <spec-file>- Run single test filenpm run test-dev- Run tests against development environmentnpm run test-dev-single -- <spec-file>- Run single test in dev mode
Language Tools
npm run lang-sort- Sort language filesnpm run lint:lang- Validate JSON language files
Platform-Specific TypeScript
TypeScript configuration is split between web and native platforms with separate tsconfig files.
Architecture Overview
Multi-Platform Structure
Jitsi Meet supports both web and React Native platforms with platform-specific file extensions and directories:
.web.ts/.web.tsx- Web-specific implementations.native.ts/.native.tsx- React Native-specific implementations.any.ts/.any.tsx- Shared cross-platform code.android.ts/.android.tsx- Android-specific code.ios.ts/.ios.tsx- iOS-specific codeweb/directories - Web-specific components and modulesnative/directories - React Native-specific components and modulesreact/features/mobile/- Native-only features
Core Directories
react/features/- Main application features organized by domain (83+ feature modules)modules/- Legacy JavaScript modules and APIscss/- SCSS stylesheets compiled to CSSlibs/- Compiled output directory for JavaScript bundlesstatic/- Static assets and HTML filestests/- WebDriverIO end-to-end tests
Feature-Driven Architecture
The application is organized under react/features/ with each feature containing:
actionTypes.ts- Redux action type constantsactions.ts- Redux action creators (platform-specific variants with.any.ts,.web.ts,.native.ts)reducer.ts- Redux reducer functionsmiddleware.ts- Redux middleware for side effectsfunctions.ts- Utility functions and selectorsconstants.ts- Feature-specific constantslogger.ts- Feature-specific logger instancetypes.ts- TypeScript type definitions
Key Application Files
app.js- Main web application entry pointwebpack.config.js- Multi-bundle Webpack configurationMakefile- Build system for development and productionpackage.json- Dependencies and scripts with version requirements
Bundle Architecture
The application builds multiple bundles:
app.bundle.js/app.bundle.min.js- Main application bundle (entry:./app.js)external_api.js/external_api.min.js- External API for embedders (entry:./modules/API/external/index.js)alwaysontop.js/alwaysontop.min.js- Always-on-top window functionality (entry:./react/features/always-on-top/index.tsx)close3.js/close3.min.js- Close3 functionality (entry:./static/close3.js)face-landmarks-worker.js/face-landmarks-worker.min.js- Face landmarks detection worker (entry:./react/features/face-landmarks/faceLandmarksWorker.ts)noise-suppressor-worklet.js/noise-suppressor-worklet.min.js- Audio noise suppression worklet (entry:./react/features/stream-effects/noise-suppression/NoiseSuppressorWorklet.ts)screenshot-capture-worker.js/screenshot-capture-worker.min.js- Screenshot capture worker (entry:./react/features/screenshot-capture/worker.ts)
Redux Architecture
Features follow a Redux-based architecture with:
- Actions, reducers, and middleware in each feature directory
- Cross-platform state management
- Modular feature organization with clear boundaries
The codebase uses a registry-based Redux architecture:
- ReducerRegistry - Features register their reducers independently
- MiddlewareRegistry - Features register middleware without cross-dependencies
- IReduxState - Global state is strongly typed with 80+ feature states
Dependencies
- Uses
lib-jitsi-meetas the core WebRTC library - React with TypeScript support
- React Native for mobile applications
- Webpack for bundling with development server
TypeScript Configuration
tsconfig.web.json- Web platform TypeScript config (excludes native files)tsconfig.native.json- React Native TypeScript config (excludes web files)- Strict TypeScript settings with ES2024 target
- Platform-specific module suffixes (
.web,.native)
Key Base Features
base/app/- Application lifecycle managementbase/conference/- Core conference logicbase/tracks/- Media track managementbase/participants/- Participant managementbase/config/- Configuration managementbase/redux/- Redux infrastructure
Component Patterns
- Abstract Components - Base classes for cross-platform components
- Platform-Specific Components - Separate implementations in
web/andnative/directories - Hook-based patterns - Modern React patterns for component logic
Testing Framework
- WebDriverIO for end-to-end testing
- Test files are located in
tests/specs/and use page objects intests/pageobjects/. - Environment configuration via
.envfiles - Support for Chrome, Firefox, and grid testing
Development Guidelines
Adding New Features
- Create feature directory under
react/features/[feature-name]/ - Follow the standard file structure (actionTypes, actions, reducer, etc.)
- Register reducers and middleware using the registry pattern
- Define TypeScript interfaces for state and props
- Use platform-specific files for web/native differences
- Add feature-specific logger for debugging
Working with Existing Features
- Check for existing
.any.ts,.web.ts,.native.tsvariants - Follow established action-reducer-middleware patterns
- Use existing base utilities rather than creating new ones
- Leverage abstract components for cross-platform logic
- Maintain type safety across the entire state tree
Testing
The project uses WebDriver (WebdriverIO) for end-to-end testing. Test files are located in tests/specs/ and use page objects in tests/pageobjects/.
Build System
- Webpack - Main build system for web bundles
- Makefile - Coordinates build process and asset deployment
- Metro - React Native bundler (configured in
metro.config.js)
Platform-Specific Notes
- Web builds exclude files matching
**/native/*,**/*.native.ts, etc. - Native builds exclude files matching
**/web/*,**/*.web.ts, etc. - Use
moduleSuffixesin TypeScript config to handle platform-specific imports - Check
tsconfig.web.jsonandtsconfig.native.jsonfor platform-specific exclusions
Environment and Setup Requirements
System Requirements
- Node.js and npm are required
- Development server runs at https://localhost:8080/
- Certificate errors in development are expected (self-signed certificates)
Development Workflow
- Development server proxies to configurable target (default: https://alpha.jitsi.net)
- Hot module replacement enabled for development
- Bundle analysis available via
ANALYZE_BUNDLE=trueenvironment variable - Circular dependency detection via
DETECT_CIRCULAR_DEPS=true
Code Quality Requirements
- All code must pass
npm run lint:ciandnpm run tsc:ciwith 0 warnings before committing - TypeScript strict mode enabled - avoid
anytype - ESLint config extends
@jitsi/eslint-config - Prefer TypeScript for new features, convert existing JavaScript when possible
Code Style and Standards
Conventional Commits Format
Follow Conventional Commits with mandatory scopes:
feat(feature-name): description
fix(feature-name): description
docs(section): descriptionAvailable types: build, chore, ci, docs, feat, fix, perf, refactor, revert, style, test
Feature Layout Structure
When adding new features:
react/features/sample/
├── actionTypes.ts
├── actions.ts
├── components/
│ ├── AnotherComponent.tsx
│ └── OneComponent.tsx
├── middleware.ts
└── reducer.tsTypeScript Requirements
- All new features must be written in TypeScript
- Convert JavaScript to TypeScript when modifying existing code
- Import middleware in
react/features/app/middlewares.{any,native,web}.js - Import reducers in appropriate registry files
- Avoid
indexfiles
Bundle Size Management
- Bundle size limits are enforced to prevent bloat
- For increases, analyze first:
npx webpack -p --analyze-bundle - Open analyzer:
npx webpack-bundle-analyzer build/app-stats.json - Justify any dependency additions that increase bundle size
Testing and Quality Assurance
Tests
- End-to-end tests are defined in the tests/
- Tests run automatically for project member PRs via Jenkins
- Tests cover peer-to-peer, invites, iOS, Android, and web platforms
- Beta testing available at https://beta.meet.jit.si/
Manual Testing Checklist
- Test with 2 participants (P2P mode)
- Test with 3+ participants (JVB mode)
- Verify audio/video in both modes
- Test mobile apps if changes affect mobile
- Check that TLS certificate chain is complete for mobile app compatibility
Common Issues and Debugging
P2P vs JVB Problems
- Works with 2 participants, fails with 3+: JVB/firewall issue, check UDP 10000
- Works on web, fails on mobile apps: TLS certificate chain issue, need fullchain.pem
- Use the tests from tests/ directory to verify functionality across platforms
Development Server Issues
- Certificate warnings are normal for development (self-signed)
- Use different backend with WEBPACK_DEV_SERVER_PROXY_TARGET environment variable
- Check firewall settings if local development fails
Configuration and Customization
- Extensive configuration options documented in handbook
- See
config.jsfor client-side options - Options marked 🚫 are not overwritable through
configOverwrite - Reference Configuration Guide for details
Architecture Deep Dive
Core Application Files
./conference.js- Foundation for user-conference interactions (connection, joining, muting)./modules/external-api- External API for iframe integration and events./lang/- Translations inmain-[language].jsonfiles./css/- SCSS files organized by features, matching React feature structure
State Management Flow
- Actions dispatched from components
- Middleware processes side effects
- Reducers update state
- Components re-render based on state changes
- Registry pattern keeps features decoupled
Cross-Platform Strategy
- Abstract components handle shared logic
- Platform files (.web.ts, .native.ts) handle platform differences
- Build system excludes irrelevant platform files
- TypeScript configs ensure proper platform targeting
External Resources
- Jitsi Handbook - Comprehensive documentation
- Community Forum - Ask questions and get support
- Architecture Guide - System overview
- Contributing Guidelines - Detailed contribution process
Trending
Less talk lately.about the whole repository
Who's talking about jitsi/jitsi-meet
- TJ FREE“Using Jitsi Meet | Video Conference Demonstration”YouTube · Apr 19, 2020 · 188k views
- UsefulVid“Kostenlose Video Konferenz mit Jitsi Meet als Moderator erstellen”YouTube · Mar 23, 2020 · 75k views
- Jitsi“Jitsi Meet Mobile Tutorial”YouTube · Jul 31, 2017 · 53k views
- Jitsi“Scaling Jitsi Meet in the Cloud Tutorial”YouTube · Jul 10, 2018 · 45k views
- Hak5“Setting Up Your Own Video Hangout Server With Jitsi, Hak5 1810”YouTube · Apr 22, 2015 · 42k views
The biggest 5 of 80 mentions linking to the repository that our crawl found. Each line is their own headline.
See all 80
Talked about on Stack Overflow, YouTube, GitHub, Bluesky, Hacker News and the web (80 times).
On Stack Overflow · 25
- Mar 22, 2022How to set Kotlin version6 votes · 3 answers
- Sep 19, 2016how to embed jitsi with my web application using REST API CALL?5 votes
- Apr 22, 2020Make Jitsi-Meet work with apache on a sub URL4 votes
- Jan 10, 2019Create Jitsi Meet Framework for native iOS application and integrate in Xcode Project4 votes
- Sep 22, 2017Jitsi Meet Installation on Windows4 votes
20 more on Stack Overflow
- May 21, 2021RTCDataChannel communication between server and client3 votes
- Aug 22, 2019how to change layout of Jitsi Meet3 votes
- Apr 12, 2017how to change layout of Jitsi Meet3 votes
- Jul 28, 2016How to pass user authentication through jitsi-meet external API3 votes · 2 answers
- Mar 31, 2020How to use jitsi with vue?2 votes
- Aug 13, 2017Archive Validation error: Unsupported Architecture, Invalid Segment Alignment, etc ~Jitsi Meet2 votes
- May 17, 2014lua-sec-prosody Unable to locate package2 votes · 2 answers
- Mar 18, 2025Jitsi Meet Self-Hosted – Unexpected Session Time Limit1 vote
- Mar 18, 2025Time-Limited Alert in Self-Hosted Jitsi Meet – How to Remove?1 vote
- Nov 11, 2023How to find out the number of video calls that are currently running on jitsi-meet?1 vote
- Jun 13, 2021'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle:1 vote · 1 answer
- Apr 1, 2021LUA - Calling function from other module without exporting table1 vote · 2 answers
- Jul 25, 2019Jitsi-meet compiled from source, but got error when run dev server1 vote · 2 answers
- Sep 7, 2017How to use jitsi as an independent service on another server(own)?1 vote
- Jul 22, 2017Having an issue installing jitsi-meet?1 vote
- Dec 23, 2016Android Webview Uncaught ReferenceError: $ is not defined1 vote
- Oct 26, 2016Trying to install jitsi meet with apache21 vote · 1 answer
- Aug 22, 2019Unable to understand the navigation in jitsi0 votes
- Oct 9, 2017etherpad-lite permission denied, open './SESSIONKEY.txt'0 votes · 1 answer
- Sep 18, 2017How do I compile Jicofo from source?0 votes · 1 answer
On YouTube · 22
- Apr 19, 2020Using Jitsi Meet | Video Conference Demonstration — TJ FREE188k views · 217 comments
- Mar 23, 2020Kostenlose Video Konferenz mit Jitsi Meet als Moderator erstellen — UsefulVid75k views · 43 comments
- Jul 31, 2017Jitsi Meet Mobile Tutorial — Jitsi53k views · 11 comments
- Jul 10, 2018Scaling Jitsi Meet in the Cloud Tutorial — Jitsi45k views · 13 comments
- Apr 22, 2015Setting Up Your Own Video Hangout Server With Jitsi, Hak5 1810 — Hak542k views · 56 comments
17 more on YouTube
- Nov 11, 2019Jitsi Meet is a self hosted, open source, free alternative to GoToMeeting, Join.Me, Zoom and More. — Awesome Open Source29k views · 62 comments
- Mar 15, 2020Meetings und Video Konferenzen im Browser mit Jitsi Meet - VPS self hosting für 5€ / Monat — UsefulVid12k views · 14 comments
- Apr 19, 2020How to setup up a local copy of jitsi video conferencing — Daniel Persson9.1k views · 35 comments
- Mar 29, 2020開源視訊會議軟體 - Jitsi主機安裝教學 — Club of Workshop1012k views · 18 comments
- Apr 25, 2020Jitsi Meet and FusionPBX — Len Graham1.9k views
- May 7, 2020Schulmeeting mit Jitsi Meet - Kurzanleitung — Clanfamily827 views
- Apr 14, 2020Sichere Videokonferenzen - absolut einfach! — WORKSHOPPEN816 views · 2 comments
- Apr 22, 2020Benutzung von Jitsi als Videokonferenzlösung — Menschen und Medien e.V.652 views · 2 comments
- Jul 13, 2026Stop Paying for Zoom! FREE Unlimited Video Calls (Jitsi Meet) — OpenRepo546 views
- May 4, 2021Ordered raised hands list. Jitsi euhack21 — Isaac Marco Blancas150 views
- Aug 14, 2025GitHub - jitsi/jitsi-meet: Jitsi Meet - Secure, Simple and Scalable Video Conferences that you us... — GitHub Daily Trend AI Podcast121 views
- Sep 13, 202610 free GitHub projects you can legally rebrand and sell #ai — Neura Quanta75 views
- Oct 11, 2026Jitsi Routes a Video Call Without Mixing Every Stream — Cochran Labs70 views
- Aug 19, 2026Jitsi Meet : Alternative Zoom / Google Meet — Open Projects60 views
- Sep 22, 202003 - Servidores Jitsi — Oveja Data59 views · 1 comment
- Aug 23, 2026Stop Paying $149.90 for Zoom Pro — This Free GitHub Repo Replaces It — Githut43 views · 1 comment
- Nov 24, 2021jitsi/jitsi-meet - Grource visualisation — Gourcer20 views
On GitHub · 16
- Apr 22, 2020webrtc insertable streams — mozilla/standards-positions119 reactions · 13 comments
- Mar 19, 2020nixos/jitsi-meet: init — NixOS/nixpkgs44 reactions · 85 comments
- Mar 26, 2020Discussion: Jitsi Integration — nextcloud/spreed29 reactions · 33 comments
- Jun 1, 2021Virtual background — bigbluebutton/bigbluebutton26 reactions · 16 comments
- Jun 16, 2019audio, video conversation (call, chat), screen/CLI sharing (feature request) — keybase/keybase-issues24 reactions
11 more on GitHub
- May 1, 2020Privacy: Riot iOS connects to clients3.google.com/generate_204 every 60 seconds — element-hq/element-ios11 reactions · 7 comments
- Apr 19, 2022Support multiple audio inputs in Firefox 101 — jitsi/lib-jitsi-meet10 reactions · 7 comments
- Apr 21, 2019Foss build flavour contains google play service libraries — RocketChat/Rocket.Chat.Android8 reactions · 9 comments
- Apr 18, 2019Jitsi Secure Domain support — turt2live/matrix-dimension8 reactions
- Jan 26, 2018Jitsi: Warn that jitsi conference calls are not e2e encrypted — element-hq/riot-meta8 reactions · 1 comment
- Sep 23, 2022[App Request] Jitsi Meet — IceWhaleTech/CasaOS-AppStore7 reactions
- Mar 14, 2019[NEW] Video conference — RocketChat/Rocket.Chat.Android6 reactions · 1 comment
- Jun 26, 2026fix(rtc): stop Firefox sending over the suspended JVB connection during P2P — jitsi/lib-jitsi-meet3 reactions
- Mar 21, 2020VoIP: Jitsi Meet: warn about E2EE, GA & link public instances list — privacytools/privacytools.io3 reactions · 1 comment
- Sep 19, 2023Abstract out file storage so it can be handled by the embedding app — jitsi/excalidraw2 reactions · 5 comments
- Apr 22, 2021Add jitsi video conference automation — cloud-barista/cb-tumblebug2 reactions
On Bluesky · 11
- Dec 28, 2024📦 jitsi / jitsi-meet ⭐ 23,608 (+34) 🗒 TypeScript Jitsi Meet - Secure, Simple and Scalable Video Conferences that you use as a standalone… — @github-trending-js.bsky.social5 likes and reposts
- Sep 9, 2025📦 jitsi / jitsi-meet ⭐ 27,088 (+41) 🗒 TypeScript Jitsi Meet - Secure, Simple and Scalable Video Conferences that you use as a standalone… — @github-trending-js.bsky.social2 likes and reposts
- Aug 14, 2025📦 jitsi / jitsi-meet ⭐ 26,339 (+37) 🗒 TypeScript Jitsi Meet - Secure, Simple and Scalable Video Conferences that you use as a standalone… — @github-trending-js.bsky.social2 likes and reposts
- Feb 25, 2026https://github.com/jitsi/jitsi-meet — @tom-doerr.bsky.social1 likes and repost
- Dec 5, 2025📦 jitsi / jitsi-meet ⭐ 27,795 (+48) 🗒 TypeScript Jitsi Meet - Secure, Simple and Scalable Video Conferences that you use as a standalone… — @github-trending-js.bsky.social1 likes and repost
6 more on Bluesky
- Aug 13, 2025📦 jitsi / jitsi-meet ⭐ 26,237 (+19) 🗒 TypeScript Jitsi Meet - Secure, Simple and Scalable Video Conferences that you use as a standalone… — @github-trending.bsky.social1 likes and repost
- Mar 19, 2024📦 jitsi / jitsi-meet ⭐ 21,423 (+54) 🗒 TypeScript Jitsi Meet - Secure, Simple and Scalable Video Conferences that you use as a standalone… — @github-trending-js.bsky.social1 likes and repost
- Feb 28, 2024📦 jitsi / jitsi-meet ⭐ 21,156 (+33) 🗒 TypeScript Jitsi Meet - Secure, Simple and Scalable Video Conferences that you use as a standalone… — @github-trending-js.bsky.social1 likes and repost
- May 12, 2023📦 jitsi-meet 👤 jitsi ⭐ 19,702 (+8) 🗒 TypeScript Jitsi Meet - Secure, Simple and Scalable Video Conferences that you use as a standalone… — @github-trending-js.bsky.social1 likes and repost
- Jul 31, 2026🚀 GitHub Intelligence Drop jitsi-meet (TypeScript • 🟢) ⭐ 29.7K → https://github.com/jitsi/jitsi-meet unleash (TypeScript • 🟢) ⭐ 13.7K →… — @githubfeed.bsky.social0 likes and reposts · 1 reply
- Nov 28, 2024You could partially solve the security issues if you ran your own server, the url would be nearly impossible to guess. You could add a… — @oplopanax.ca0 likes and reposts · 1 reply
On Hacker News · 4
- Mar 26, 2020Jitsi Meet about to solve Firefox/Safari issues5 points · 1 comment
- Apr 16, 2020Jitsi now actively supports Firefox and other non-Chromium browsers4 points
- Apr 19, 2020Jitsi Meet Gains Firefox Support2 points
- Apr 12, 2020Jitsi Meet – Tracking in the iOS and Android Apps2 points
On the web · 2
- Sep 25, 2017Using Jitsi Desktop with Jitsi meet · Issue #2014 — google.com
- Mar 8, 2017How to test jitsi-meet? · Issue #1387 — google.com
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

