Skip to main content

Vibe Features

Vibe Agent uses a high-level planner to architect specialized multi-agent workflows. This page covers the technical design behind graph generation, tool integration, and flow lifecycle management.

Initialization Parameters​

The VibeAgent accepts the following configuration parameters:

ParameterTypeDescription
planner_providerstrLLM provider for the planner (openai, anthropic, gemini, vllm, llamacpp).
planner_api_keystrAPI key for cloud planner providers. Optional for vllm or llamacpp.
planner_modelstrSpecific model version (e.g., gpt-4o, gemini-2.0-flash).
text_modelstr(Optional) Preferred model string for text tasks.
image_modelstr(Optional) Preferred model string for image tasks.
speech_modelstr(Optional) Preferred model string for speech tasks.
recognition_modelstr(Optional) Preferred model string for transcription tasks.
processorsdictMapping of strings to post-processing functions.
context_fileslistCustom list of code files to provide to the planner for context.

Quick Example​

from intelli.flow import VibeAgent

# 1. Initialize the architect
va = VibeAgent(planner_provider="openai", planner_api_key="your_key")

# 2. Build the graph from a vibe
flow = await va.build("Research AI trends and generate a summary report")

# 3. Execute the flow
results = await flow.start()

The Generated Blueprint​

The blueprint is the bridge between natural language and the Flow execution engine.

Task Definition​

Each task in the blueprint follows this schema:

  • name: Unique identifier for the task node.
  • desc: The instruction to be executed by the agent.
  • agent: AgentSpec containing agent_type, provider, and mission.
  • model_params: Dictionary of model-specific parameters (e.g., temperature, max_tokens).
  • post_process: Key of a function defined in the VibeAgent.processors map.

Global Configuration​

  • max_workers: Integer defining the maximum parallel task execution.
  • output_memory_map: Maps task outputs to shared memory keys for downstream access.
  • map_paths: Defines the dependency edges between tasks (DAG structure).

Advanced Methods​

Flow Persistence​

Use save_bundle to export the generated blueprint for production use without re-running the planner.

# Exports flow_spec.json and vibeflow_graph.png
va.save_bundle(save_dir="./prod_flow", spec=va.last_spec, flow=flow)

Direct Blueprint Execution​

Reconstruct a flow directly from a saved blueprint to save latency and costs.

spec = va.load_spec("./prod_flow/flow_spec.json")
flow = va.build_from_spec(spec)

Blueprint Modification​

Modify existing architectures using natural language instructions.

# existing_spec is loaded from a path or va.last_spec
updated_flow = await va.edit(spec_path="./path/to/spec.json", instruction="Add a validation step")

Runtime Features​

Environment Variable Injection​

Vibe Agent supports secret resolution at runtime using the ${ENV:VAR_NAME} syntax. This ensures that API keys or sensitive endpoints are not persisted in the flow_spec.json file.

Automatic Output Management​

Configure the execution engine to handle file persistence automatically:

  • flow.auto_save_outputs = True: Automatically writes images and audio files to disk.
  • flow.output_dir = "./path": Sets the target directory for all generated assets.

Offline / Local Models (vLLM + llama.cpp)​

VibeAgent supports local inference for the Architect (planner) or individual tasks when you provide the connection details.

  • vLLM: provide baseUrl (e.g. ${ENV:VLLM_BASE_URL}) and a model name.
  • llama.cpp: provide model_path (e.g. ${ENV:LLAMACPP_MODEL_PATH}).
import os
from intelli.flow import VibeAgent

va = VibeAgent(
planner_provider="vllm",
planner_model="deepseek-ai/DeepSeek-R1-Distill-Llama-8B",
planner_options={"baseUrl": os.getenv("VLLM_BASE_URL")},
)

Example prompt to generate offline agent​

This prompt tells the Architect (planner) to design the execution graph and generate with offline text agent.
When you call await va.build(vibe), VibeAgent uses the planner to produce the full spec (tasks, providers, routing) and then builds a runnable Flow.

vibe = (
"Create a 2-step flow. "
"Step 1 (research): Use OpenAI to extract 8 key facts about solid-state batteries. "
"Step 2 (offline_summary): Use vLLM at ${ENV:VLLM_BASE_URL} with model "
"'deepseek-ai/DeepSeek-R1-Distill-Llama-8B' to summarize the facts into 5 bullets."
)

flow = await va.build(vibe)

Get the next agent guide in your inbox.

Be the first to read new guides on AI agents, RAG and MCP apps.