Skip to main content
You use CrewAI for multi-agent crews, AutoGen for conversational agents, or LlamaIndex for retrieval pipelines. Apie provides per-task and per-step wrappers that emit workflow and tool telemetry inside runs.

CrewAI

import { withCrewAiTask, withCrewAiToolStep } from "@apie-sh/sdk";

await apie.withRun({ inputSummary: "CrewAI run" }, async (run) => {
  await withCrewAiTask(
    apie,
    { runId: run.id, taskName: "research", stepKey: "research", stepIndex: 0 },
    async () => crew.kickoff(),
  );

  await withCrewAiToolStep(
    apie,
    { runId: run.id, toolName: "web_search", actionType: "read", resourceType: "knowledge_base" },
    async () => searchTool.run("query"),
  );
});

AutoGen

import { withAutogenStep, withAutogenToolStep } from "@apie-sh/sdk";

await withAutogenStep(
  apie,
  { runId: run.id, stepKey: "agent-reply", stepName: "Agent reply", stepIndex: 1 },
  async () => agent.generate_reply(messages),
);

await withAutogenToolStep(
  apie,
  { runId: run.id, toolName: "code_executor", actionType: "execute", resourceType: "shell_command" },
  async () => executeCode(snippet),
);

LlamaIndex

import { withLlamaIndexStep, withLlamaIndexToolStep } from "@apie-sh/sdk";

await withLlamaIndexStep(
  apie,
  { runId: run.id, stepKey: "query", stepName: "Query index", stepIndex: 0 },
  async () => queryEngine.query("What caused the outage?"),
);

await withLlamaIndexToolStep(
  apie,
  { runId: run.id, toolName: "retriever", actionType: "read", resourceType: "knowledge_base" },
  async () => retriever.retrieve("outage"),
);

What you’ll see

Workflow step events (agent.workflow.step.*) and tool call events in the run timeline.

Next steps

Multi-agent pipelines

Model orchestrator → worker handoffs.

Integrations hub

All integrations.