Skip to content

About

Beeline Cloud PBX calls for agents: sync call records, transcribe recordings locally, search them with your other messages

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

30 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

beeline — Beeline Cloud PBX calls for AI agents

Your company's recorded calls from Beeline Cloud PBX (Облачная АТС Билайн), transcribed on your computer, searchable offline, and ready for Claude Code, Codex, Gemini CLI or any agent — within limits you set. По-русски: README.ru.md.

beeline copies the list of recorded calls from Beeline into the local WireCat store, one meeting per call, with the manager and the client as its two people. meetings transcribe downloads each recording and turns it into a dialogue between the manager and the client, with a speech model that runs on this computer. Then you list, read, search and export the calls with no network. beeline only reads from Beeline: it never deletes a recording and never places a call.

An example conversation (invented calls, illustrative output):

You:    Use beeline. Which calls from yesterday were longer than five minutes?
Agent:  (runs beeline work meetings list "started_at>=2026-11-06 duration_ms>=300000" --json)
        Four calls. Three are transcribed; the fourth is not yet.
You:    Transcribe it and tell me what the client asked for.
Agent:  (runs beeline work meetings transcribe id:42 --json, then beeline work meetings transcript 42 --json)
        The client asked for a second delivery date and a written quote.

Quick start

npm install -g @wirecat/beeline-cli
beeline skill install                    # the agent skill, for Claude Code, Codex and Gemini CLI
beeline work session start               # paste the API token from the Beeline cabinet
beeline work meetings sync               # copy the recorded calls into the local store
beeline models download gigaam-v3        # the local speech model, once
beeline work meetings transcribe         # transcribe up to 20 calls of five seconds or more

work is a profile: a name you choose for one PBX. It is the first word of every command that uses an account. The first sync reaches 30 days back; each later one asks only for what is new.

You need Node.js 22.16 or a later 22.x, or Node.js 24 or later. If beeline is not found, run beeline doctor. It needs no network and shows what is set up.

More: installation.

What you can do

List the calls. Filter by time or by duration.

beeline work meetings list "started_at>=2026-11-01 duration_ms>=60000"

Read a call. Each transcript is a dialogue: channel 0 of the recording is the manager, channel 1 the client.

beeline work meetings transcript 42

Transcribe what is new. Without a query, every call of five seconds or more that has no transcript yet, newest first. A call that fails is listed and the rest go on; run it again to go on where it stopped.

beeline work meetings transcribe --max-meetings 50

Transcribe a backlog. A run takes at most --max-meetings calls, so a backlog of hundreds is one run with a large cap, or several runs that each go on where the last stopped. On a recent laptop processor a call takes about one seventh of its length (1644 s of audio in 222 s, measured on 2026-11-12). There is no built-in schedule yet: run meetings sync and meetings transcribe from cron or a systemd timer. A call over 60 minutes is listed as failed (recording.too-long) and never downloaded. A call with no speech or with one mixed channel fails each time it is picked, as nothing remembers the failure yet; leave it out with a query, such as NOT id:375.

beeline work meetings sync && beeline work meetings transcribe --max-meetings 500

Find a word in every call. Searches the transcripts and cites the call and the line.

beeline work search meetings "доставка"

More:

  • Export a call as Markdown or WebVTT: beeline work meetings export 42 --format vtt --output call.vtt.
  • Find a manager across the calls: beeline work meetings people "Test Manager".
  • Search every WireCat store on this computer, chats and calls together, from any WireCat CLI with search all.

See the calls in Bitrix24's deals and leads. A sync links the client of each call it saves to the Bitrix24 contact with the same phone number. For this, beeline and b24 must use the same store on this computer (neither sets MESSAGING_STORE apart) and both accounts must be in the work scope; beeline puts its account there itself. Then b24 work deals show 12 --json and leads show list the newest calls of the people on the deal or lead in the field meetings, and a person's context (contacts context in the Telegram or MAX tool) lists theirs. A mobile number that only the client and one contact hold links at once. A landline, such as an office's main number, only proposes the link, because everyone who works there shares it.

b24 work sync                              # the contacts first
beeline work meetings sync --rescan        # links the calls of the last 30 days
beeline work meetings sync --since-time 2026-01-01T00:00:00Z   # and older ones

Calls synced by a version before this one are not linked until a sync saves them again: --rescan reads the last 30 days again, --since-time reaches further back. The same holds for a contact added to Bitrix24 after its calls were synced.

A store that already holds calls synced by an unpublished build from before 13.11.2026 keeps their old client numbers (phone:9…, without +7). Those calls do not link, and a re-sync adds a second client to each, until a later version migrates them. A fresh install is not affected.

More: use it.

For AI agents

  • An agent with a terminal — Claude Code, Codex, Gemini CLI, OpenClaw or Hermes Agent. It runs beeline itself. beeline skill install writes the skill, the agent's instruction sheet.
  • An app with no terminal — Claude Desktop, Cursor and other MCP clients. Connect the profile's MCP server, beeline work mcp serve; beeline work mcp config prints the entry to paste.
beeline skill install
beeline work mcp add claude-code --allow-writes   # or: codex
beeline work mcp check

The server also offers commands that write, such as models download, meetings repair and config set, so mcp add stops until you pass --allow-writes. The profile's permissions decide what an agent may run. Text from a call — a transcript, a comment, a name — is marked untrusted: it is data for the agent, never instructions. session start, session end and account remove are never offered to an agent. With --json, every command prints one JSON value, and an error comes as JSON with a code to branch on.

More: agents.

Why this tool

  • The recordings stay with you. Speech is recognized on this computer. No recording or transcript goes to a speech service.
  • Read-only against Beeline. Nothing it runs can delete a recording or place a call.
  • Reads need no network after a sync. List, search and export answer from the local store.
  • Built for agents. A skill, an MCP server, one JSON form and exit codes a script can branch on.

Main features

  • Manager and client apart. Beeline records each side on its own channel, so the dialogue needs no guessing about who spoke.
  • Resumable transcription. A call keeps its transcript once made, so the next meetings transcribe goes on with the calls that have none.
  • Retries Beeline's passing failures. A download that fails with a 500 is tried again before it counts as failed.
  • One store with the other WireCat tools. Calls sit beside the chats, mail and meetings that the Telegram, MAX, Google Calendar and other WireCat tools keep.

Sign-in and profiles

Each profile is one Beeline PBX. No command ever picks a profile for you; beeline session list lists them.

beeline work session start               # asks for the token hidden, or reads it from stdin
beeline work session status --check      # ask Beeline whether the token still works
beeline work session end                 # forget the token; the synced calls stay
beeline work account remove --keep-data  # forget the profile here; --delete-data deletes its calls too

The token comes from the Beeline cabinet: Услуги → Интеграция по API. beeline keeps it in the system keyring. Where the keyring fails, it uses a private file and says so once. BEELINE_TOKEN in the environment is read first. BEELINE_PROFILE=work names the profile for a whole shell session.

Settings and permissions

Settings live in one config.json; beeline work config show lists them. Each command has a permission key, its path: meetings.sync, meetings.transcribe. Each is allow, ask, readonly or deny.

beeline work config set permissions.meetings.sync deny    # this profile never asks Beeline for new calls
beeline work meetings sync --dry-run                       # what it would do and the permission it needs

BEELINE_READ_ONLY=1 refuses every command that changes your sign-in, your settings, the agent setup or the stored meetings: session start and end, config set, unset, migrate and repair, skill install, mcp add and revoke, meetings repair, and upgrade. It lets through what only adds: meetings sync still fetches new calls into the store, meetings transcribe adds transcripts (with --replace, the old one stays in the transcript's history), models download fetches a model, meetings export --output writes a new file inside a scheduled run's work folder and nowhere else, and mcp serve, mcp server start and stop run. A --dry-run always runs, as it changes nothing.

More: settings.

Limits

  • Only the calls Beeline recorded are listed: the PBX must have recording turned on for the manager.
  • Transcription is local only. A cloud speech service, such as OpenAI, is planned.
  • A recording over 256 MB is refused.

Security

  • The token is sent only to Beeline, in a request header. No command, error, log or run record shows it.
  • Recordings are held in memory while they are transcribed, and never written to disk.
  • The store keeps client phone numbers and the managers' names, emails and extensions. Treat it like the calls themselves.

More: security. Report a vulnerability as SECURITY.md says.

When it does not work

beeline doctor                           # what is set up; no network, no keyring
beeline work session status --check      # does Beeline still accept the token
beeline work meetings sync --trace       # the connection log, never content
beeline work runs list                   # failed runs are kept

More: when something goes wrong.

Documentation

Section Pages
Start overview · installation · use it
Reference all commands · settings and permissions
If something is wrong when something goes wrong · security
Changes CHANGELOG.md

For developers: design, tests and the rules for agents in AGENTS.md.

Development

pnpm install
pnpm lint && pnpm typecheck && pnpm test
pnpm build && pnpm smoke:node          # the built command: the bundle users install
pnpm generate                          # rewrite the generated files
pnpm release:check                     # every check CI runs

The shared part — output streams, error codes, the keyring, the store, search and MCP — lives in @wirecat/cli-base and its sibling library cli-core.

Contributing and license

Pull requests, bug reports and ideas go to issues.

Apache License 2.0 — LICENSE.

About

Beeline Cloud PBX calls for agents: sync call records, transcribe recordings locally, search them with your other messages

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages