> ## Documentation Index
> Fetch the complete documentation index at: https://docs.agno.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Basic Workflow Tracing

> Trace workflows with Agno in AgentOS.

This example shows how to enable tracing for a workflow in AgentOS. Simply set `tracing=True` and all workflow runs, model calls, and tool executions are automatically captured.

<Steps>
  <Step title="Create a Python file">
    ```python basic_workflow_tracing.py theme={null}
    from agno.agent import Agent
    from agno.db.sqlite import SqliteDb
    from agno.os import AgentOS
    from agno.tools.hackernews import HackerNewsTools
    from agno.workflow.condition import Condition
    from agno.workflow.step import Step
    from agno.workflow.types import StepInput
    from agno.workflow.workflow import Workflow

    # Set up database
    db = SqliteDb(db_file="tmp/traces.db")

    # === BASIC AGENTS ===
    researcher = Agent(
        name="Researcher",
        instructions="Research the given topic and provide detailed findings.",
        tools=[HackerNewsTools()],
    )

    summarizer = Agent(
        name="Summarizer",
        instructions="Create a clear summary of the research findings.",
    )

    fact_checker = Agent(
        name="Fact Checker",
        instructions="Verify facts and check for accuracy in the research.",
        tools=[HackerNewsTools()],
    )

    writer = Agent(
        name="Writer",
        instructions="Write a comprehensive article based on all available research and verification.",
    )

    # === CONDITION EVALUATOR ===


    def needs_fact_checking(step_input: StepInput) -> bool:
        """Determine if the research contains claims that need fact-checking"""
        return True


    # === WORKFLOW STEPS ===
    research_step = Step(
        name="research",
        description="Research the topic",
        agent=researcher,
    )

    summarize_step = Step(
        name="summarize",
        description="Summarize research findings",
        agent=summarizer,
    )

    # Conditional fact-checking step
    fact_check_step = Step(
        name="fact_check",
        description="Verify facts and claims",
        agent=fact_checker,
    )

    write_article = Step(
        name="write_article",
        description="Write final article",
        agent=writer,
    )

    # === BASIC LINEAR WORKFLOW ===
    basic_workflow = Workflow(
        name="Basic Linear Workflow",
        description="Research -> Summarize -> Condition(Fact Check) -> Write Article",
        db=db,
        steps=[
            research_step,
            summarize_step,
            Condition(
                name="fact_check_condition",
                description="Check if fact-checking is needed",
                evaluator=needs_fact_checking,
                steps=[fact_check_step],
            ),
            write_article,
        ],
    )

    # Setup our AgentOS app
    agent_os = AgentOS(
        description="Example app for tracing Basic Workflow",
        workflows=[basic_workflow],
        tracing=True,
    )
    app = agent_os.get_app()

    if __name__ == "__main__":
        agent_os.serve(app="basic_workflow_tracing:app", reload=True)
    ```
  </Step>

  <Snippet file="create-venv-step.mdx" />

  <Step title="Install dependencies">
    ```bash theme={null}
    uv pip install -U openai agno opentelemetry-api opentelemetry-sdk openinference-instrumentation-agno
    ```
  </Step>

  <Step title="Export your OpenAI API key">
    <CodeGroup>
      ```bash Mac/Linux theme={null}
      export OPENAI_API_KEY="your_openai_api_key_here"
      ```

      ```bash Windows theme={null}
      $Env:OPENAI_API_KEY="your_openai_api_key_here"
      ```
    </CodeGroup>
  </Step>

  <Step title="Run AgentOS">
    ```bash theme={null}
    python basic_workflow_tracing.py
    ```

    Your AgentOS will be available at `http://localhost:7777`. View traces in the AgentOS dashboard.
  </Step>
</Steps>
