Flow Companion

The Workspace

The composer, the conversation list, the model picker, connection status, and how to read every kind of card in the transcript.

Companion is one page with a header and three panels. This page covers the chat surface itself — the workflow preview panel has its own.

The header

ControlWhat it does
Companion brand (left)Identifies the surface. No action.
Connection badge (right)Live socket status, plus the active tenant and environment.
Settings (far right)Opens the settings modal — MCP, Tools, Models, General.

Connection status

The badge shows one of three states:

StateDotMeaning
ConnectedGreenThe socket is live. You can send messages.
ConnectingAmber, pulsingEstablishing or re-establishing the connection.
DisconnectedGreyNo live connection. The composer is disabled.

Click the badge to open a popover showing the active tenant · environment. When the connection has dropped, the popover offers a Reconnect button.

This badge is the only place connection state appears. The transcript never fills with connect/disconnect banners, so a flaky network does not pollute the conversation you are reading.

The composer stays disabled until both a tenant and an environment are resolved. If the popover reads "Selecting tenant / environment…", choose them in the platform first.

The composer

ElementBehaviour
Text areaGrows as you type, up to five lines, then scrolls. In an active conversation the placeholder reads "Reply to the agent or refine the workflow…".
EnterSends the message.
Shift+EnterInserts a newline.
AttachPaperclip button for attachments.
Model pickerChooses the LLM that answers this turn.
Send / StopSends the message; becomes Stop while a turn is running.

One turn at a time

While Companion is working, the primary button turns into Stop. Sending is blocked until the turn settles — this keeps tool calls, approvals, and the workflow pipeline from interleaving in ways you cannot follow.

Pressing Stop aborts the in-flight turn and inserts a quiet centred marker in the transcript reading "Stopped by you". It is a notice, not an error; the conversation continues normally from there.

Choosing a model

The model picker lists the chat models configured for your tenant, with their provider. Your choice applies to the turns you send from then on — you can switch models mid-conversation.

If the picker is empty, no LLM model is configured. Ask Companion to set one up, or add one in the LLM catalog.

The model changes who answers. It does not change which tools exist — that is fixed when the conversation connects. See Settings → Tools.

Conversations

The left rail holds your conversation history.

ControlBehaviour
New conversationStarts a fresh session. Appears in the list immediately as New chat.
SearchFilters the list by title as you type.
RECENTYour conversations, newest first, with a relative timestamp (now, 14m, 3h, 2d).
Rename (pencil)Edits the title inline. Enter commits, Esc cancels.
Delete (×)Removes the conversation. Deleting the active one starts a new session.

Rename and delete appear on hover, and always on the active row.

Auto-naming

A new conversation is titled from your first message, so the list stays readable without you naming anything. The name appears as soon as the title is staged — you do not wait for a round trip. Rename it whenever you like.

Auto-collapse

The rail collapses to a 60-pixel icon strip the moment you click or focus the chat or preview, giving the transcript the width it needs. Re-expanding is manual — use the sidebar toggle at the top of the rail. Companion will not collapse it out from under you a second time.

Switching back

Selecting a past conversation reloads its transcript. A skeleton shows while history loads; the empty hero does not flash in between.

Reading the transcript

Messages are labelled You and Companion. Above the transcript, a sub-header carries the conversation title and the line "Live session · streaming from the Harness agent".

A Companion conversation about a HubSpot ticket workflow: a user message, a Companion reply, and two Generate workflow tool cards with expanded JSON arguments, beside the Workflow preview panel showing Designing and streaming designer activity lines

Between the messages, Companion's activity is rendered as inline cards rather than hidden behind prose.

Tool calls

Every tool the agent calls appears as one card that transitions in place. You do not get a call card and a separate result card — it is a single row with a lifecycle.

Each card shows:

  • A readable labelGenerate workflow, Publish workflow — not the raw tool name.
  • A one-line summary of what it was asked to do.
  • An expandable arguments block with the exact JSON payload.
  • A status chip on the right: a spinner while it runs, called once it settles, or an error.

This is the fastest way to answer "what did it actually do?" when an answer looks wrong. The label tells you the intent; the arguments block tells you the truth.

Approval requests

Consequential and destructive actions pause and render an approval card with a tier badge, the arguments, and Approve / Deny. Destructive actions require a written justification before Approve is enabled. Once decided, the card flips to a read-only Approved or Denied record.

See Approvals and tool tiers.

Forms

When Companion needs values the model should not see — passwords, API keys, connection strings — it renders a form card. What you type is routed straight to the next tool call and never enters the assistant's context. After you submit or cancel, the card becomes a read-only Submitted or Cancelled record.

Some flows need you to open a URL — an OAuth consent screen, for example. Companion renders a link card with a label, a description, and a button. Some link cards collect a field or two first, such as a name for the connection you are about to create. Link cards can carry an expiry, after which the URL stops working and you ask Companion to generate a fresh one.

Tables

When you ask what exists — connected apps, configured models, gateway consumers, endpoints — the answer comes back as a sortable table rather than a JSON dump. Rows can carry actions:

  • Prompt actions send a pre-written message on your behalf, as if you had typed it.
  • Drawer actions open the relevant editor directly on the row you clicked.

Destructive row actions ask for confirmation first.

Connection cards

When Companion provisions an app it renders a provisioning card and opens the real drawer. On completion the card records the outcome — the connection's name on success, or unavailable when the app has no connector at all. See Connecting apps and credentials.

Keyboard reference

KeyAction
EnterSend
Shift+EnterNewline
Enter / EscCommit / cancel a conversation rename
EscClose the connection popover

Ask AI

FlowGenX Documentation

How can I help you?

Ask me anything about FlowGenX AI - workflows, agents, integrations, and more.

AI responses based on FlowGenX docs