Skip to main content
In this guide, we will be using Next.js. If you’re working with a different supported framework, you can find instructions on how to define a workflow endpoint in the quickstarts. If you’re new to Upstash Workflow, it’s a good idea to start by exploring the Local Development documentation. This guide will help you set up and use Upstash Workflow in a local environment.

Installation

First, create a new Next.js project with:
Then, install the following packages:

Start Local QStash Server

Next, start the local QStash server with the following:
For other local development options, you can refer to the local development documentation.

Set Environment Variables

Once you start the QStash server, you’ll see QSTASH_URL and QSTASH_TOKEN values in the console. Add these values to your .env.local file together with OPENAI_API_KEY env variable:
.env.local

Define an endpoint

Next, we will define the endpoint to run the agent.
app/workflow/route.ts
You can refer to the documentations for defining a workflow endpoint and the Agents API features to learn more.

Calling the Endpoint

To run the endpoint, first run the Next.js app with:
Then, we call the endpoint using the Workflow Client:
If you are using a local tunnel, replace the url above (http://127.0.0.1:3000) with the public URL.
In the console where you run the Next.js app, you should see logs like this:
If you run the same endpoint using a local tunnel, you can also see how Upstash Workflow runs the agent in steps: Each tool invocation and LLM call is a seperate step. Our agent first made a call to OpenAI to decide whether to use a tool or reply right away. OpenAI responded with a request to use the tool communicationTool. Tool was executed and OpenAI was called with the result of the tool. OpenAI then responded with the final response.