Skip to content

About

Unified abstraction for real-time collaboration platforms

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

OmniMeet Core

Go CI Go Lint Go SAST Docs Docs Visualization License

Unified abstraction for real-time collaboration platforms

OmniMeet enables AI agents to participate in meetings as first-class participants alongside humans, abstracting over LiveKit, Daily, Zoom, Google Meet, Microsoft Teams, and other real-time collaboration platforms.

Features

  • 🔌 Provider Agnostic - Write code once, deploy on any supported platform
  • 🤖 Agent-First Design - Built for AI agents, not retrofitted
  • 🎙️ Voice Integration - Seamless STT/TTS with OmniVoice
  • 🛠️ OmniAgent Skills - Ready-to-use tools for meeting management
  • ⚡ Real-time Events - Participant joins, track publications, active speakers

Installation

go get github.com/plexusone/omnimeet-core

Quick Start

package main

import (
    "context"
    "log"

    "github.com/plexusone/omnimeet-core/meeting"
    "github.com/plexusone/omni-livekit/omnimeet"
)

func main() {
    ctx := context.Background()

    // Create LiveKit provider
    provider, _ := omnimeet.NewProvider(omnimeet.Config{
        APIKey:    "your-api-key",
        APISecret: "your-api-secret",
        ServerURL: "wss://your-livekit-server",
    })

    // Create a meeting
    m, _ := provider.CreateMeeting(ctx, meeting.CreateRequest{
        Name: "Team Standup",
    })

    log.Printf("Meeting created: %s", m.ID)
}

Packages

Package Description
meeting Meeting state and lifecycle
participant Participant info and roles
track Audio/video track types
event Real-time meeting events
token Authentication tokens
provider Provider interface and client
agent Agent skill interfaces
skill Meeting skill for OmniAgent
voice Voice agent types
recording Recording state
transcript Transcription types
attendee Sessions for attending meetings hosted by others
dialin Join meetings by phone: dial-in numbers, keypad sequences, and the dial-in joiner
dialin/dialintest Simulated meetings for testing dial-in
invite Parse meeting invitations and .ics files

Attending External Meetings

Agents can also attend meetings hosted by others on Zoom, Google Meet, and Microsoft Teams. Phone dial-in works with any meeting that lists a dial-in number: parse the invite, and the dial-in joiner calls the meeting, enters the meeting ID and passcode as keypad tones, and hands the agent the meeting's audio.

jt, err := invite.Parse(invitationText) // or invite.ParseICS for .ics files
if err != nil {
    return err
}

// gw is an omnivoice-core voice gateway in audio mode, for example from
// omni-twilio or omni-telnyx with Mode: gateway.PipelineModeAudio.
joiner := dialin.NewJoiner(gw, dialin.WithCountry("US"))
sess, err := joiner.Join(ctx, jt)
if err != nil {
    return err // dialin.ErrNoDialIn when the meeting has no phone option
}

audio := sess.(attendee.AudioReceiver).ReceiveAudio() // mixed meeting audio
speaker := sess.(attendee.AudioSender).SendAudio()    // played into the meeting
defer sess.Leave(ctx)

The session reports its state through Events(): joining, connected, admitted, and left or ended. Phone dial-in cannot see whether the meeting admitted the caller, so the session reports admitted once the keypad sequence has had time to finish.

For tests, dialin/dialintest simulates meetings with Zoom, Google Meet, and Teams phone menus, so code can join, listen, speak, and leave without a real meeting. examples/dialin runs the whole flow against a simulated meeting. See ADR-009 for the connector plan.

Provider Implementations

Provider Package Status
LiveKit omni-livekit Available
Daily omni-daily Planned
Zoom omni-zoom Planned

Architecture

OmniMeet is part of the PlexusOne OmniAgent ecosystem:

OmniAgent (orchestration)
     |
     +-- OmniLLM    (reasoning)
     +-- OmniChat   (async messaging)
     +-- OmniVoice  (speech: TTS/STT)
     +-- OmniMemory (conversation memory)
     +-- OmniMeet   (real-time collaboration)  <-- This library
             |
             +-- omni-livekit
             +-- omni-daily
             +-- omni-zoom

Documentation

Requirements

  • Go 1.26 or later

License

Apache 2.0 - see LICENSE for details.

About

Unified abstraction for real-time collaboration platforms

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages