About Herald

A podcast engine built to stay open.

Herald is designed to turn both ideas and source material into finished podcasts while keeping the important choices in your hands: where it runs, which AI providers it uses, how the content is handled, and how the audio is generated.

Herald logo
What Herald is

More than article-to-audio.

Herald can act as a researcher and podcast writer, a source-bounded adapter, or a literal reader. A job can begin with a topic you want explored or with material you already have. Telegram is the current remote interface, while the generation pipeline runs on your own server.

Inputs supported today

Four ways to start a podcast.

The input determines what Herald has to work with; the generation mode determines what Herald is allowed to do with it.

Topic seed

Start with a subject, question, or concept.

A short prompt can become a complete research-backed episode. Topic mode treats the prompt as the subject to investigate rather than as source text to summarize.

Article URL

Use a public web page as the source.

Herald extracts the article and can either stay strictly grounded in that material or use it as the foundation for broader contextual research.

Pasted text

Send the text directly.

Notes, newsletters, copied articles, reports, and other text can be pasted into Telegram without requiring a public URL.

Forwarded message

Forward content already in Telegram.

A forwarded Telegram message can become the source for a new job, keeping intake convenient when the content is already in your conversations.

Generation modes

Control how far Herald goes.

Modes are explicit so the same platform can be used for research, adaptation, expansion, or direct reading.

Topic

Research synthesis

Herald researches a topic seed, builds a grounded narrative plan, and writes a long-form episode around the subject. This is the mode that makes Herald an open-ended podcast generator rather than only a source converter.

Source

Source-bounded adaptation

The supplied material is the factual boundary. Herald can organize and narrate it, but does not add outside facts or research.

Expanded

Source plus context

The submitted source remains the anchor while Herald performs bounded web research to add context, background, and supporting information.

Literal

Zero-AI narration

Herald deterministically cleans and chunks the supplied text and sends it to local TTS without an LLM rewriting the content or making an AI API call.

Length control Choose Auto or target approximately 10, 20, 30, 45, or 60 minutes. Fixed durations use section budgets to keep long-form generation on target.
AI without lock-in

Bring the provider that fits your setup.

Herald treats the model provider as a configurable component rather than the product itself.

Primary, secondary, tertiary

Configure a provider chain so Herald can fail over when a service is unavailable, rate-limited, or otherwise cannot complete the job.

Hosted or local

Current provider support includes Gemini, Groq, Cloudflare, OpenAI, OpenRouter, Mistral, Anthropic, and local Ollama models.

No AI required

Literal mode remains available when the goal is simply to turn supplied text into speech without an LLM in the path.

Telegram-first

The bot is the remote control.

Herald uses Telegram for more than intake. It is the current user interface for configuring, starting, checking, and retrieving podcast jobs.

/settingsVoice, speed, default mode, providers, and models
/modelsBrowse the live model catalog for configured providers
/statusRuntime, TTS, AI, queue, disk, and uptime information
/queueSee pending, scripting, and synthesizing jobs
/diagnosticsInspect job diagnostics and retrieve a redacted support bundle
/downloadRetrieve a completed podcast MP3
Architecture

A durable pipeline behind a simple chat interface.

The current deployment separates intake, generation, state, and speech so individual pieces can change without redefining the whole product.

TelegramInput & control
HeraldJobs & orchestration
Research / SourceEvidence & planning
AI ProviderOptional writing
Kokoro TTSLocal narration
MP3Telegram delivery
PostgreSQL Persistent job state, queueing, crash recovery, execution history, and restart-safe operation underneath the pipeline.
Self-hosted deployment

Designed to run behind your firewall.

The installer targets Ubuntu 24.04 on AMD64 or ARM64 and deploys Herald with Docker Compose. Telegram long polling is outbound, so the bot can operate without exposing inbound webhooks, public ports, a domain, or an HTTPS certificate.

The stack uses PostgreSQL for durable state, Kokoro for local neural speech synthesis, and FFmpeg for final spoken-word audio processing. Owner pairing uses a one-time code so a private installation can be bound to the intended Telegram account.

Current deployment model
Ubuntu 24.04
    ↓
Docker Compose
    ├─ Telegram bot
    ├─ Herald worker
    ├─ PostgreSQL
    └─ Kokoro TTS

Outbound Telegram long polling
No inbound webhook required
Open source & extensible

The pipeline is the product.

Herald is released under the MIT License and is structured so intake, AI providers, research, narration, state, and delivery are distinct concerns.

That separation is what gives Herald room to grow. Telegram is the supported remote interface today, but it is not meant to define the limits of the underlying generation engine. Likewise, hosted AI services are supported components rather than mandatory dependencies, and local models can participate in the same provider architecture.

The goal is a podcast generation system that remains useful whether you want a researched episode on a new subject, an adaptation of a specific source, or a straightforward local reading of text you already trust.

Open source

Explore the implementation.

The source code, installer, configuration, and project documentation are available on GitHub.