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

# Agent State

This example shows how to create an agent that maintains state across interactions. It demonstrates a simple counter mechanism, but this pattern can be extended to more complex state management like maintaining conversation context, user preferences, or tracking multi-step processes.

Example prompts to try:

* "Increment the counter 3 times and tell me the final count"
* "What's our current count? Add 2 more to it"
* "Let's increment the counter 5 times, but tell me each step"
* "Add 4 to our count and remind me where we started"
* "Increase the counter twice and summarize our journey"

## Code

```python agent_state.py theme={null}
from agno.agent import Agent
from agno.models.openai import OpenAIChat
from agno.run import RunContext


def increment_counter(run_context: RunContext) -> str:
    """Increment the counter in session state."""
    # Initialize counter if it doesn't exist
    if not run_context.session_state:
        run_context.session_state = {}

    if "count" not in run_context.session_state:
        run_context.session_state["count"] = 0

    # Increment the counter
    run_context.session_state["count"] += 1

    return f"Counter incremented! Current count: {run_context.session_state['count']}"


def get_counter(run_context: RunContext) -> str:
    """Get the current counter value."""
    if not run_context.session_state:
        run_context.session_state = {}

    count = run_context.session_state.get("count", 0)
    return f"Current count: {count}"


# Create an Agent that maintains state
agent = Agent(
    model=OpenAIChat(id="gpt-5-mini"),
    # Initialize the session state with a counter starting at 0
    session_state={"count": 0},
    tools=[increment_counter, get_counter],
    # Use variables from the session state in the instructions
    instructions="You can increment and check a counter. Current count is: {count}",
    # Important: Resolve the state in the messages so the agent can see state changes
    resolve_in_context=True,
    markdown=True,
)

# Test the counter functionality
print("Testing counter functionality...")
agent.print_response(
    "Let's increment the counter 3 times and observe the state changes!", stream=True
)
print(f"Final session state: {agent.get_session_state()}")
```

## Usage

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

  <Step title="Install libraries">
    ```bash theme={null}
    pip install openai agno
    ```
  </Step>

  <Step title="Run the agent">
    ```bash theme={null}
    python agent_state.py
    ```
  </Step>
</Steps>
