← 开源
joinly-ai

joinly

Make your meetings accessible to AI Agents

AI EngineeringGive agent knowledgePython
在 GitHub 打开
增长势头
+024 小时新增 Star0.0%
569
Star
96
Fork
+1
本周
5
贡献者
创建于 2025-05-29 · 更新于 2026-10-14 · 今日第 16856 名
主要开发者
dbrockmannmathisdittrichfynnomenon

joinly-ai/joinly 排名第 16,856,有 569 个星标。

同类别比较

joinly-ai/joinly 排名第 16,856,此处有 8 个同类条目;ayi-ai/nie-grassroots-logic 排名第 16,862。

同类别比较
名称排名指标
urban-bot/urban-bot16,836
语言:
TypeScript
星标数:
570
分叉数:
32
简介:
🤖 The universal chatbot library based on React. Write once, launch Telegram, Discord, Facebook, ... every messenger with chatbots
GaTech-RL2/EgoVerse16,843
语言:
Jupyter Notebook
星标数:
569
分叉数:
55
简介:
EgoVerse: Egocentric Data for Robot Learning from Around the World
SakanaAI/treequest16,846
语言:
Python
星标数:
569
分叉数:
75
简介:
A Tree Search Library with Flexible API for LLM Inference-Time Scaling
antfu/skills-npm16,849
语言:
TypeScript
星标数:
569
分叉数:
19
简介:
Install agent skills from npm
ayi-ai/nie-grassroots-logic16,862
语言:
HTML
星标数:
568
分叉数:
65
简介:
聂·基层运行逻辑 · Agent Skill:基于聂辉华《基层中国的运行逻辑》的方法论工具箱(不含原书全文)
isekOS/ISEK16,866
语言:
Python
星标数:
568
分叉数:
40
简介:
A decentralized agent network for building collaborative, LLM-powered agent-to-agent (A2A) systems.
qntx/ovo16,872
语言:
Rust
星标数:
568
分叉数:
95
简介:
Agent behavior that compiles
rsmdt/the-startup16,875
语言:
Shell
星标数:
568
分叉数:
70
简介:
The Agentic Startup - A collection of Claude Code commands, skills, and agents.
关键参数与规格
关键参数与规格
参数值
语言Python
类别AI Engineering
子类别Give agent knowledge
关键词Data extraction, Speech-to-text
星标数569
分叉数96
贡献者5
创建日期2025-05-29
更新日期2026-10-14
1 天星标数0
7 天星标数1
排名16,856
上次排名16,648
排名变化-208
7 天星标排名11,315
上次 7 天星标排名11,379
7 天星标排名变化64
总星标排名17,521
上次总星标排名17,486
总星标排名变化-35
README 摘录

Make your meetings accessible to AI Agents 🤖 **joinly. ai** is a connector middleware designed to enable AI agents to join and actively participate in video calls. ai provides essential meeting tools and resources that can equip any AI agent with the skills to perform tasks and interact with you in real time during your meetings. IMPORTANT] Don't want the hustle of setting everything up? ☁️🚀 :sparkles: Features **Live Interaction**: Lets your agents execute tasks and respond in real-time by voice

or chat within your meetings **Conversational flow**: Built-in logic that ensures natural conversations by handling interruptions and multi-speaker interactions **Cross-platform**: Join Google Meet, Zoom, and Microsoft Teams (or any available over the browser) **Bring-your-own-LLM**: Works with all LLM providers (also locally with Ollama) **Choose-your-preferred-TTS/STT**: Modular design supports multiple services - Whisper/Deepgram for STT and Kokoro/ElevenLabs/Deepgram for TTS (and more to come. ) **100% open-source, self-hosted and privacy

-first** :rocket: :video_camera: Demos GitHub In this demo video, joinly answers the question 'What is Joinly? ' by accessing the latest news from the web. It then creates an issue in a GitHub demo repository. Notion In this demo video, we connect joinly to our notion via MCP and let it edit the content of a page content live in the meeting. :rocket: :zap: Quickstart Run joinly via Docker with a basic conversational agent client. IMPORTANT] **Prerequisites**: Docker installation Create

a new folder or clone this repository (not mandatory for the following steps). In this directory, create a new file with a valid API key for the LLM provider you want to use, e. TIP] You can find the OpenAI API key here [! example for complete configuration options including Anthropic (Claude) and Ollama setups. 3GB since it packages browser and models): Launch your meeting in Zoom, Google Meet or Teams and let joinly join the meeting using the meeting link

as . Then, run the following command from the folder where you created the file: :red_circle: Having trouble getting started? Let's figure it out together on our discord! :technologist: Run a custom client In Quickstart, we ran the Docker Container directly as a client using . But we can also run it as a server and connect to it from outside the container, which allows us to connect other MCP servers. Here, we run a custom client using the joinly-client

package and connect it to the joinly MCP server. IMPORTANT] **Prerequisites**: do the Quickstart (except the last command), install uv, and open two terminals Start the joinly server in the first terminal (note, we are not using here and publish port on only): [! WARNING] The joinly MCP server has no authentication and accepts client-supplied configuration, so it is meant to run locally with a single trusted client. Bind it to (as above) and do not expose the port to

a network. While the server is running, start the example client implementation in the second terminal window to connect to

常见问题

记录了多少星标和分叉?

joinly-ai/joinly 有 569 个星标和 96 个分叉。

仓库排名是多少?

joinly-ai/joinly 排名第 16,856。

记录的语言和类别是什么?

joinly-ai/joinly 有 569 个星标,语言为 Python,类别为 AI Engineering。

哪个仓库排名最接近?

joinly-ai/joinly 与 ayi-ai/nie-grassroots-logic 比较,后者排名第 16,862,有 568 个星标。

README

Make your meetings accessible to AI Agents 🤖

joinly.ai is a connector middleware designed to enable AI agents to join and actively participate in video calls. Through its MCP server, joinly.ai provides essential meeting tools and resources that can equip any AI agent with the skills to perform tasks and interact with you in real time during your meetings.

Want to dive right in? Jump to the Quickstart! Want to know more? Visit our website!

[!IMPORTANT]
Don't want the hustle of setting everything up? Try our cloud first! ☁️🚀

:sparkles: Features

  • Live Interaction: Lets your agents execute tasks and respond in real-time by voice or chat within your meetings
  • Conversational flow: Built-in logic that ensures natural conversations by handling interruptions and multi-speaker interactions
  • Cross-platform: Join Google Meet, Zoom, and Microsoft Teams (or any available over the browser)
  • Bring-your-own-LLM: Works with all LLM providers (also locally with Ollama)
  • Choose-your-preferred-TTS/STT: Modular design supports multiple services - Whisper/Deepgram for STT and Kokoro/ElevenLabs/Deepgram for TTS (and more to come...)
  • 100% open-source, self-hosted and privacy-first :rocket:

:video_camera: Demos

GitHub

In this demo video, joinly answers the question 'What is Joinly?' by accessing the latest news from the web. It then creates an issue in a GitHub demo repository.

Notion

In this demo video, we connect joinly to our notion via MCP and let it edit the content of a page content live in the meeting.

Any ideas what we should build next? Write us! :rocket:

:zap: Quickstart

Run joinly via Docker with a basic conversational agent client.

[!IMPORTANT] Prerequisites: Docker installation

Create a new folder joinly or clone this repository (not mandatory for the following steps). In this directory, create a new .env file with a valid API key for the LLM provider you want to use, e.g. OpenAI:

[!TIP] You can find the OpenAI API key here

# .env
# for OpenAI LLM
# change key and model to your desired one
JOINLY_LLM_MODEL=gpt-4o
JOINLY_LLM_PROVIDER=openai
OPENAI_API_KEY=your-openai-api-key

[!NOTE] See .env.example for complete configuration options including Anthropic (Claude) and Ollama setups. Replace the placeholder values with your actual API keys and adjust the model name as needed. Delete the placeholder values of the providers you don't use.

Pull the Docker image (~2.3GB since it packages browser and models):

docker pull ghcr.io/joinly-ai/joinly:latest

Launch your meeting in Zoom, Google Meet or Teams and let joinly join the meeting using the meeting link as ``. Then, run the following command from the folder where you created the .env file:

docker run --env-file .env ghcr.io/joinly-ai/joinly:latest --client 

:red_circle: Having trouble getting started? Let's figure it out together on our discord!

:technologist: Run a custom client

In Quickstart, we ran the Docker Container directly as a client using --client. But we can also run it as a server and connect to it from outside the container, which allows us to connect other MCP servers. Here, we run a custom client using the joinly-client package and connect it to the joinly MCP server.

[!IMPORTANT] Prerequisites: do the Quickstart (except the last command), install uv, and open two terminals

Start the joinly server in the first terminal (note, we are not using --client here and publish port 8000 on localhost only):

docker run -p 127.0.0.1:8000:8000 ghcr.io/joinly-ai/joinly:latest

[!WARNING] The joinly MCP server has no authentication and accepts client-supplied configuration, so it is meant to run locally with a single trusted client. Bind it to localhost (as above) and do not expose the port to a network.

While the server is running, start the example client implementation in the second terminal window to connect to it and join a meeting:

uvx joinly-client --env-file .env 

Add MCP servers to the client

Add the tools of any MCP server to the agent by providing a JSON configuration. The configuration file can contain multiple entries under "mcpServers" which will all be available as tools in the meeting (see fastmcp client docs for config syntax):

{
    "mcpServers": {
        "localServer": {
            "command": "npx",
            "args": ["-y", "package@0.1.0"]
        },
        "remoteServer": {
            "url": "http://mcp.example.com",
            "auth": "oauth"
        }
    }
}

Add for example a Tavily config for web searching, then run the client using the config file, here named config.json:

uvx joinly-client --env-file .env --mcp-config config.json 

:wrench: Configurations

Configurations can be given via env variables and/or command line args. Here is a list of common configuration options, which can be used when starting the docker container:

docker run --env-file .env -p 127.0.0.1:8000:8000 ghcr.io/joinly-ai/joinly:latest 

Alternatively, you can pass --name, --lang, and provider settings as command line arguments using joinly-client, which will override settings of the server:

uvx joinly-client  

Basic Settings

In general, the docker image provides an MCP server which is started by default. But to quickly get started, we also include a client implementation that can be used via --client. Note, in this case no server is started and no other client can connect to it.

# Start directly as client; default is as server, to which a custom client can connect
--client 

# Change participant name (default: joinly)
--name "AI Assistant"

# Change language of TTS/STT (default: en)
# Note, availability depends on the TTS/STT provider
--lang de

# Change host & port of the joinly MCP server
--host 0.0.0.0 --port 8000

Providers

Text-to-Speech

# Kokoro (local) TTS (default)
--tts kokoro
--tts-arg voice=  # optionally, set different voice

# ElevenLabs TTS, include ELEVENLABS_API_KEY in .env
--tts elevenlabs
--tts-arg voice_id=  # optionally, set different voice

# Deepgram TTS, include DEEPGRAM_API_KEY in .env
--tts deepgram
--tts-arg model_name=  # optionally, set different model (voice)

Transcription

# Whisper (local) STT (default)
--stt whisper
--stt-arg model_name=  # optionally, set different model (default: base), for GPU support see below

# Deepgram STT, include DEEPGRAM_API_KEY in .env
--stt deepgram
--stt-arg model_name=  # optionally, set different model

Debugging

# Start browser with a VNC server for debugging;
# forward the port and connect to it using a VNC client
--vnc-server --vnc-server-port 5900

# Logging
-v  # or -vv, -vvv

# Help
--help

GPU Support

We provide a Docker image with CUDA GPU support for running the transcription and TTS models on a GPU. To use it, you need to have the NVIDIA Container Toolkit installed and CUDA >= 12.6. Then pull the CUDA-enabled image:

docker pull ghcr.io/joinly-ai/joinly:latest-cuda

Run as client or server with the same commands as above, but use the joinly:{version}-cuda image and set --gpus all:

# Run as server
docker run --gpus all --env-file .env -p 8000:8000 ghcr.io/joinly-ai/joinly:latest-cuda -v
# Run as client
docker run --gpus all --env-file .env ghcr.io/joinly-ai/joinly:latest-cuda -v --client 

By default, the joinly image uses the Whisper model base for transcription, since it still runs reasonably fast on CPU. For cuda, it automatically defaults to distil-large-v3 for significantly better transcription quality. You can change the model by setting --stt-arg model_name= (e.g., --stt-arg model_name=large-v3). However, only the respective default models are packaged in the docker image, so it will start to download the model weights on container start.

:test_tube: Create your own agent

You can also write your own agent and connect it to our joinly MCP server. See the code examples for the joinly-client package or the client_example.py if you want a starting point that doesn't depend on our framework.

The joinly MCP server provides following tools and resources:

Tools

  • join_meeting - Join meeting with URL, participant name, and optional passcode
  • leave_meeting - Leave the current meeting
  • speak_text - Speak text using TTS (requires text parameter)
  • send_chat_message - Send chat message (requires message parameter)
  • mute_yourself - Mute microphone
  • unmute_yourself - Unmute microphone
  • get_chat_history - Get current meeting chat history in JSON format
  • get_participants - Get current meeting participants in JSON format
  • get_transcript - Get current meeting transcript in JSON format, optionally filtered by minutes
  • get_video_snapshot - Get an image from the current meeting, e.g., view a current screenshare

Resources

  • transcript://live - Live meeting transcript in JSON format, including timestamps and speaker information. Subscribable for real-time updates when new utterances are added.

:building_construction: Developing joinly.ai

For development we recommend using the development container, which installs all necessary dependencies. To get started, install the DevContainer Extension for Visual Studio Code, open the repository and choose Reopen in Container.

The installation can take some time, since it downloads all packages as well as models for Whisper/Kokoro and the Chromium browser. At the end, it automatically invokes the download_assets.py script. If you see errors like Missing kokoro-v1.0.onnx, run this script manually using:

uv run scripts/download_assets.py

We'd love to see what you are using it for or building with it. Showcase your work on our discord

:pencil2: Roadmap

Meeting

  • [x] Meeting chat access
  • [ ] Camera in video call with status updates
  • [ ] Enable screen share during video conferences
  • [ ] Participant metadata and joining/leaving
  • [ ] Improve browser agent capabilities

Conversation

  • [x] Speaker attribute for transcription
  • [ ] Improve client memory: reduce token usage, allow persistence across meetings events
  • [ ] Improve End-of-Utterance/turn-taking detection
  • [ ] Human approval mechanism from inside the meeting

Integrations

  • [ ] Showcase how to add agents using the A2A protocol
  • [ ] Add more provider integrations (STT, TTS)
  • [ ] Integrate meeting platform SDKs
  • [ ] Add alternative open-source meeting provider
  • [ ] Add support for Speech2Speech models

:busts_in_silhouette: Contributing

Contributions are always welcome! Feel free to open issues for bugs or submit a feature request. We'll do our best to review all contributions promptly and help merge your changes.

Please check our Roadmap and don't hesitate to reach out to us!

:memo: License

This project is licensed under the MIT License ‒ see the LICENSE file for details.

:speech_balloon: Getting help

If you have questions or feedback, or if you would like to chat with the maintainers or other community members, please use the following links:

Made with ❤️ in Osnabrück

排名相邻
同类项目