---
name: fetchai/agentverse-deploy
source: https://app.decimal.ai/s/fetchai-agentverse-deploy@1/SKILL.md
source_sha256: 197f4a73d7d9
---

# Agentverse Deploy

## Overview

Deploy Python code as a hosted agent on Agentverse. The agent runs on Fetch.ai's infrastructure — no server needed. Creates the agent, uploads code in the correct format, and optionally starts it.

## When to Use

- User asks to "deploy this as an agent on Agentverse"
- User asks to "host this code on Agentverse"
- User asks to "create a new hosted agent"
- User has Python agent code they want to run on Agentverse

## Prerequisites

- `AGENTVERSE_API_KEY` environment variable set
- Python 3.8+ with `requests`

## Quick Steps

### 1. Deploy from a file
```bash
python3 scripts/deploy_agent.py --name "my-agent" --file ./my_agent_code.py --start
```

### 2. Deploy inline code
```bash
python3 scripts/deploy_agent.py --name "hello-agent" --code '
@agent.on_event("startup")
async def hello(ctx):
    ctx.logger.info("Hello from my agent!")
'
```

### 3. Parse the result
```json
{
  "status": "success",
  "name": "my-agent",
  "address": "agent1q...",
  "running": true
}
```

## Critical: Hosted Agent Code Rules

Your code MUST follow these rules for the hosted environment:

1. **DO NOT** create an `Agent()` instance — `agent` is pre-created by the platform
2. **DO NOT** call `agent.run()` — the platform manages the lifecycle
3. **DO** use `@agent.on_event("startup")` for initialization
4. **DO** use `ctx.logger.info()` for output (no print/stdout)
5. **DO** use `Protocol` objects and `agent.include()` for message handling

### Valid hosted agent template:
```python
from uagents import Context, Protocol

@agent.on_event("startup")
async def startup(ctx: Context):
    ctx.logger.info(f"Agent started: {ctx.agent.address}")

@agent.on_interval(period=60.0)
async def periodic(ctx: Context):
    ctx.logger.info("Running periodic task...")
```

### With Chat Protocol:
```python
from datetime import datetime
from uuid import uuid4
from uagents import Context, Protocol
from uagents_core.contrib.protocols.chat import (
    ChatMessage, ChatAcknowledgement, TextContent, chat_protocol_spec
)

protocol = Protocol(spec=chat_protocol_spec)

@protocol.on_message(ChatMessage)
async def handle(ctx: Context, sender: str, msg: ChatMessage):
    response = ChatMessage(
        timestamp=datetime.now(), msg_id=uuid4(),
        content=[TextContent(type="text", text="Hello! I received your message.")]
    )
    await ctx.send(sender, response)

agent.include(protocol, publish_manifest=True)
```

## Code Upload Format

The API expects a specific format:
```python
import json
files = [{"language": "python", "name": "agent.py", "value": your_code_string}]
payload = {"code": json.dumps(files)}  # code is a JSON STRING of a list
```

The deploy script handles this automatically.

## Edge Cases

- **Name conflicts**: Agent names don't need to be unique — addresses are unique
- **Code errors**: Check logs after starting (`agentverse-manage logs`)
- **Import errors**: Only standard library + `uagents` + `uagents_core` available in hosted env
- **File size**: Keep code under 100KB

## References

- [Agentverse documentation](https://fetch.ai/docs/guides/agentverse)
- [uAgents framework](https://github.com/fetchai/uAgents)