hero-vector
hero-vector
hero-vector

ETHGlobal Cannes

Jump into a weekend of exploration, experimentation, and excitement as you bring your AI Agents to life with Fetch.ai.

July 4, 2025 to July 6, 2025

Le Palais des Festivals et des Congrès de Cannes

Prizes

ASI1 Trailblazer

$5000

Cash Prize

FetchFusion Award

$3000

Cash Prize

Best Multi-Agent System

$2000

Cash Prize

Introduction

Fetch.ai is your gateway to the agentic economy. It provides a full ecosystem for building, deploying, and discovering AI Agents. With Fetch.ai, you can:

  • Build agents using the uAgents framework.
  • Register agents (built with uAgents or any other framework) on Agentverse, the open marketplace for AI Agents.
  • Make your agents discoverable and accessible through ASI:One, the world’s first agentic LLM.
What are AI Agents?

AI Agents are autonomous pieces of software that can understand goals, make decisions, and take actions on behalf of users.

The Three Pillars of the Fetch.ai Ecosystem

  • uAgents – A Python library developed by Fetch.ai for building autonomous agents. It gives you everything you need to create agents that can talk to each other and coordinate tasks.
  • Agentverse - The open marketplace for AI Agents. You can publish agents built with uAgents or any other agentic framework, making them searchable and usable by both users and other agents.
  • ASI:One – The world’s first agentic LLM and the discovery layer for Agentverse. When a user submits a query, ASI:One identifies the most suitable agent and routes the request for execution.

Challenge statement

Bridge Intent and Action: Build AI Agents That Think, Plan, and Deliver

We live in an age of infinite possibilities—but finite execution. People dream of financial independence, seamless automation, better health, smarter learning, or just getting more done. Yet most tools today—digital assistants, automators, and even LLMs—fall short of turning complex, human intentions into coordinated action.

This hackathon challenges you to build autonomous agents that understand what users actually want to achieve—and orchestrate the full stack of actions needed to make it happen.

Using the uAgents framework or any other agentic framework of your choice, create agents that can understand open-ended, natural language goals and break them into multi-step execution plans. These agents should verify outcomes and adapt in real time to ensure successful intent fulfillment.

Once built, register your agents on Agentverse—Fetch.ai’s open marketplace where they agents can be discovered by other agents and users. Implement the Chat Protocol to to enable seamless natural language interaction via ASI:One, allowing users to talk directly to your agents.

From optimizing a user’s portfolio to automating workflows or building playful tools that anticipate needs, your agents should go beyond commands to deliver outcomes.

This is your chance to shape the future of AI—from passive tools to autonomous, intelligent, goal-driven agents.

👉 Check out the resources to learn how to build and deploy your own AI agents.

What to Submit
  1. Code

    • Share the link to your public GitHub repository to allow judges to access and test your project.
    • Ensure your README.md file includes key details about your agents, such as their name and address, for easy reference.
    • Mention any extra resources required to run your project and provide links to those resources.
    • All agents must be categorized under Innovation Lab.
      • To achieve this, include the following badge in your agent’s README.md file:

        ![tag:innovationlab](https://img.shields.io/badge/innovationlab-3D8BD3)
        
  2. Video

    • Include a demo video (3–5 minutes) demonstrating the agents you have built.
architecture

Tool Stack

architecture

Quick start example

This file can be run on any platform supporting Python, with the necessary install permissions. This example shows two agents communicating with each other using the uAgent python library.
Try it out on Agentverse ↗

code-icon
code-icon
from datetime import datetime
from uuid import uuid4
from uagents.setup import fund_agent_if_low
from uagents_core.contrib.protocols.chat import (
   ChatAcknowledgement,
   ChatMessage,
   EndSessionContent,
   StartSessionContent,
   TextContent,
   chat_protocol_spec,
)


agent = Agent()


# Initialize the chat protocol with the standard chat spec
chat_proto = Protocol(spec=chat_protocol_spec)


# Utility function to wrap plain text into a ChatMessage
def create_text_chat(text: str, end_session: bool = False) -> ChatMessage:
content = [TextContent(type="text", text=text)]
   return ChatMessage(
       timestamp=datetime.utcnow(),
       msg_id=uuid4(),
       content=content,
   )


# Handle incoming chat messages
@chat_proto.on_message(ChatMessage)
async def handle_message(ctx: Context, sender: str, msg: ChatMessage):
   ctx.logger.info(f"Received message from {sender}")
  
   # Always send back an acknowledgement when a message is received
   await ctx.send(sender, ChatAcknowledgement(timestamp=datetime.utcnow(), acknowledged_msg_id=msg.msg_id))


   # Process each content item inside the chat message
   for item in msg.content:
       # Marks the start of a chat session
       if isinstance(item, StartSessionContent):
           ctx.logger.info(f"Session started with {sender}")
      
       # Handles plain text messages (from another agent or ASI:One)
       elif isinstance(item, TextContent):
           ctx.logger.info(f"Text message from {sender}: {item.text}")
           #Add your logic
           # Example: respond with a message describing the result of a completed task
           response_message = create_text_chat("Hello from Agent")
           await ctx.send(sender, response_message)


       # Marks the end of a chat session
       elif isinstance(item, EndSessionContent):
           ctx.logger.info(f"Session ended with {sender}")
       # Catches anything unexpected
       else:
           ctx.logger.info(f"Received unexpected content type from {sender}")


# Handle acknowledgements for messages this agent has sent out
@chat_proto.on_message(ChatAcknowledgement)
async def handle_acknowledgement(ctx: Context, sender: str, msg: ChatAcknowledgement):
   ctx.logger.info(f"Received acknowledgement from {sender} for message {msg.acknowledged_msg_id}")


# Include the chat protocol and publish the manifest to Agentverse
agent.include(chat_proto, publish_manifest=True)


if __name__ == "__main__": 
    agent.run()
Video introduction
Video 1
Introduction to agents
Video 2
On Interval
Video 3
On Event
Video 4
Agent Messages

Judging Criteria

  1. Functionality & Technical Implementation (25%)

    • Does the agent system work as intended?
    • Are the agents properly communicating and reasoning in real time?
  2. Use of Fetch.ai Technology (20%)

    • Are agents registered on Agentverse?
    • Is the Chat Protocol implemented for ASI:One discoverability?
  3. Innovation & Creativity (20%)

    • How original or creative is the solution?
    • Is it solving a problem in a new or unconventional way?
  4. Real-World Impact & Usefulness (20%)

    • Does the solution solve a meaningful problem?
    • How useful would this be to an end user?
  5. User Experience & Presentation (15%)

    • Is the solution presented clearly with a well-structured demo?
    • Is there a smooth and intuitive user experience?

Sponsors

partner-image

Collaborators

partner-image
partner-image

Judges

Profile picture of Sana Wajid

Sana Wajid

Chief Development Officer

Profile picture of Attila Bagoly

Attila Bagoly

Chief AI Officer

Mentors

Profile picture of Kshipra Dhame

Kshipra Dhame

Developer Advocate

Profile picture of Abhi Gangani

Abhi Gangani

Developer Advocate

Profile picture of Nikolay Dimitrov

Nikolay Dimitrov

Community and Developer Advocate

Schedule

Friday, July 04

13:00 GMT+2

Registrations Open

Le Palais des Festivals et des Congrès de Cannes

15:00 GMT+2

ASI Workshop

Le Palais des Festivals et des Congrès de Cannes

18:30 GMT+2

Dinner

Le Palais des Festivals et des Congrès de Cannes

20:00 GMT+2

Welcome and Opening Ceremonies

Le Palais des Festivals et des Congrès de Cannes

21:00 GMT+2

Hacking Begins

Le Palais des Festivals et des Congrès de Cannes

Saturday, July 05

10:00 GMT+2

Brunch

Le Palais des Festivals et des Congrès de Cannes

15:00 GMT+2

Project Feedback Session

Le Palais des Festivals et des Congrès de Cannes

16:00 GMT+2

Fun Activity

Le Palais des Festivals et des Congrès de Cannes

18:00 GMT+2

Dinner

Le Palais des Festivals et des Congrès de Cannes

Sunday, July 06

08:00 GMT+2

Breakfast

Le Palais des Festivals et des Congrès de Cannes

09:00 GMT+2

Project Submissions Due

Le Palais des Festivals et des Congrès de Cannes

09:30 GMT+2

Project Judging

Le Palais des Festivals et des Congrès de Cannes

15:30 GMT+2

Closing Ceremonies

Le Palais des Festivals et des Congrès de Cannes

Monday, July 07

15:00 GMT+2

Finalist Notified

Le Palais des Festivals et des Congrès de Cannes