github emcie-co/parlant v4.0.2

3 hours ago

[4.0.2] - 2026-11-05

Added

  • The chat widget lets the AI agent in a visitor's browser talk to your agent
    over WebMCP (document.modelContext; in Chrome behind a flag today). On
    every page it's on, the widget registers an ask_agent tool described with
    the agent's name. A call starts the widget's conversation if there is none
    yet, as one an agent holds for the customer (customer_represented_by_an_agent),
    sends the question through the chat, so it shows there with the reply, opens
    the chat, and answers the browser agent once the turn has ended. Follow-up
    calls continue the same conversation. The message carries
    metadata.parlant_widget.asked_by = "customer_agent", so the chat and your
    tools can tell the visitor's agent from the visitor. Nothing happens in a
    browser without WebMCP; webmcp={false} turns it off. ParlantTransport's
    sendMessage takes an optional metadata argument and ensureSession an
    option for the flag.
  • Server(session_store=..., customer_store=...) accepts an s3://bucket
    URL to keep sessions and customers in Amazon S3. Give Parlant a bucket of
    its own. Credentials come from the AWS credential chain; add ?region= or,
    for S3-compatible storage, ?endpoint=. The storage must support
    conditional writes, which keep concurrent servers from overwriting each
    other's updates. Empty collections survive restarts, and a failed migration
    write leaves the original data in place. Any query other than a lookup by ID,
    such as listing sessions, reads every object in the collection, so use
    MongoDB if you need indexed queries at scale.
  • The chat widget (parlant widget init) takes the agent's picture in one
    avatar prop: { type: "logo", src }, { type: "photo", src, live? } or
    { type: "video", src?, poster?, live?, launcher? }. A video avatar plays a
    short muted loop under the header, scrolls away with the conversation once
    it starts, and keeps its opened size when the chat is expanded. On the closed
    launcher, launcher crops it onto the face. Leave out src to use the
    widget's own video of an agent. live adds the green dot, on the video's
    corner too, red while the server can't be reached. Use an H.264 MP4 saved
    with -movflags +faststart; iPhone Safari stalls on WebM.

Changed

  • The chat widget's persistent suggestions stand out from its opening ones:
    outlined and lettered in the theme's primary color on the chat's background,
    instead of the grey fill.
  • On phones and tablets, the chat widget closes the on-screen keyboard once a
    message is sent, whether typed or picked from the suggestions, so the reply
    isn't hidden behind it.
  • With the LiteLLM provider, review routes now default to
    gemini/gemini-3.8-flash instead of gemini/gemini-3.6-flash, the same
    model the Gemini provider already uses for them.
  • The lead-gen scaffold's agent no longer guesses when a visitor asks about
    the business, its products or their project and its product knowledge has no
    answer. It says it's a great question but hard to answer properly in the
    chat, offers to connect them with the team, asks for an email or phone
    number, and passes the question on with request_team_follow_up. Unrelated
    questions, existing customers' order questions and prices are handled as
    before. To make that possible, record_lead now accepts a lead with just a
    goal and a contact: buying_for and role are optional, and an unknown one
    scores nothing.
  • parlant dashboard project confirm finishes a local or self-hosted project
    even when its server already holds sessions, such as from trying the agent.
    It imports them into the dashboard first, as the dashboard's Sync does, and
    then completes the setup, so the project no longer stays at "Finish setup".
    An import that takes longer than about 90 seconds stops with
    SYNC_IN_PROGRESS; run confirm again to keep waiting for the same import.
    A failed import stops with SYNC_FAILED and its reason.
  • parlant init --dashboard --json and parlant dashboard project create --json
    for a local or self-hosted project now list nextSteps, ending with
    project confirm. The scaffolded AGENTS.md tells coding agents to confirm
    the project once its server is connected.
  • After creating a managed project whose setup check found how to run it,
    parlant dashboard project create now points to
    parlant dashboard --project ID deploy: the first live deploy completes the
    setup. The dashboard's setup page is optional for reviewing the settings.

Deprecated

  • The chat widget's avatarUrl, avatarStyle and liveIndicator props, in
    favor of avatar. They still work when avatar isn't set.

Fixed

  • Gemini Argon can replay saved tool calls with their original signed thought
    blocks instead of unnecessarily falling back to result-only history.
  • Filtering sessions by labels now returns complete pages and working
    continuation cursors, with consistent total counts in either sort order.
  • MongoDB cursor pagination now preserves $or filters on later pages, so
    filtered listings no longer include records outside the requested set.
  • Canned responses now retain separate search vectors for their text and
    every signal, so signals no longer collide in the relevance index.
    Applies when responses are created or updated; existing indexes are not
    rebuilt automatically.
  • On iPhone, focusing the chat widget's message box no longer zooms the page
    in, which pushed the open chat off the right edge of the screen. The box
    uses a 16px font on touch screens, the size below which iOS zooms.
  • Local and MCP tools now accept comma-separated list arguments without
    brackets while preserving quoted commas and empty lists.
  • The chat widget's latest message no longer slips under the suggestions and
    message box when something takes the transcript's space, such as the
    "Connection interrupted" banner appearing just after a send. The transcript
    stayed pinned to the bottom only as messages grew, not as its view shrank.
  • Invalid context-variable freshness schedules are rejected before saving,
    so a failed schedule update leaves the variable's existing data intact.
  • A customer message that arrives while the agent is still working on the
    previous one now replaces that turn, as intended, even when the engine was in
    the middle of rejecting a step: a tool call or message turned down by a
    review hook, by the reviewer, or by moderation. Before, the rejection restarted
    the step and dropped the pending cancellation, so the agent finished replying
    to the first message and then answered the second one in a separate turn.
    Customers who send two messages in quick succession now get one reply that
    takes both into account.

Security

  • Raise the minimum python-multipart version to 0.0.30 for both uv
    and pip installations, preventing installation of versions affected by
    CVE-2026-53539.

[4.0.1] - 2026-11-02

Changed

  • parlant init --scaffold lead-gen now creates its agent with
    preamble_config=p.PreambleConfiguration.encourage(). Before its first tool
    call the agent says one short line, such as "Let me check that", so the
    visitor isn't left waiting in silence. Without it, preambles were unmanaged:
    whatever the model wrote before a tool call went straight through.
  • Every tool in the lead-gen and retail-store scaffolds now has a
    narration, such as "Checking which days are free" or "Tracking your
    shipment". The chat shows it while the tool runs, instead of the generic
    "Running tools".

Fixed

  • With the Anthropic provider, indexing no longer fails on Claude Opus 4.7 and
    later or any Claude 5 model, including the default routes (Sonnet 5.5 and
    Haiku 5.5). Parlant sent a temperature, which those models reject with
    "temperature is deprecated for this model."; it now sends one only to
    Claude 3 models and Claude 4 models up to 4.6, which still accept it.
  • A reasoning effort on a Claude Fable model now uses adaptive thinking instead
    of a thinking budget, which Fable rejects.
  • A reasoning effort on Claude Opus 4.5 no longer fails. Parlant sent it
    adaptive thinking, which it rejects ("adaptive thinking is not supported on
    this model"); it now gets a thinking budget, as Sonnet and Haiku 4.5 do.

[4.0.0] - 2026-11-02

Parlant 4 release.

Don't miss a new parlant release

NewReleases is sending notifications on new releases.