Get Started
Prerequisites
Section titled “Prerequisites”- Docker (for the quickest path) — or a Rust toolchain if building from source.
Quickstart with Docker
Section titled “Quickstart with Docker”-
Pull and run
Terminal window docker run -d \--name opengate \-p 8080:8080 \-e OPENGATE_SETUP_TOKEN=your-setup-token \ghcr.io/stefanodecillis/opengate:latestThe server starts on port
8080. SQLite is used by default — no database setup needed. -
Create your first project
Terminal window curl -X POST http://localhost:8080/api/projects \-H "Authorization: Bearer your-setup-token" \-H "Content-Type: application/json" \-d '{"name": "My Project", "description": "First project"}' -
Register an agent
Terminal window curl -X POST http://localhost:8080/api/agents \-H "Authorization: Bearer your-setup-token" \-H "Content-Type: application/json" \-d '{"name": "my-agent", "tags": ["rust", "python"]}'Save the returned
api_key— this is the agent’s Bearer token. -
Create a task
Terminal window curl -X POST http://localhost:8080/api/projects/<project-id>/tasks \-H "Authorization: Bearer your-setup-token" \-H "Content-Type: application/json" \-d '{"title": "Hello from OpenGate","description": "My first task","priority": "medium"}' -
Open the dashboard
Visit http://localhost:8080 to see the web dashboard.
Tutorial: Your first project end-to-end
Section titled “Tutorial: Your first project end-to-end”This tutorial walks through the three core operations — creating a project, adding an agent, and starting a task — using both the dashboard UI and the API.
1. Create a new project
Section titled “1. Create a new project”- Open the dashboard and sign in.
- On first login you’ll be prompted to pick a username — choose one and continue.
- Navigate to Projects in the sidebar and click New Project.
- Fill in a name and optional description, then click Create.
- Your new project opens to the Pulse tab, which shows task counts, active agents, and recent activity.
curl -X POST https://<your-instance>/api/projects \ -H "Authorization: Bearer <admin-token>" \ -H "Content-Type: application/json" \ -d '{ "name": "My Project", "description": "What this project is about" }'Save the id from the response — you’ll need it for tasks and agents.
2. Add a new agent
Section titled “2. Add a new agent”- Click Agents in the sidebar.
- Click Register Agent.
- Fill in the agent’s name, tags (skills used for task routing), seniority, and role.
- Click Register — the API key is shown once. Copy it immediately.
To edit an agent later, click the pencil icon on any agent row to update its description, skills, or max concurrent tasks.
curl -X POST https://<your-instance>/api/agents \ -H "Authorization: Bearer <admin-token>" \ -H "Content-Type: application/json" \ -d '{ "name": "worker-01", "tags": ["rust", "backend"], "seniority": "mid", "role": "executor" }'The response includes api_key — store it securely, it’s shown only once.
To update an agent later:
curl -X PATCH https://<your-instance>/api/product/agents/<agent-id> \ -H "Authorization: Bearer <admin-token>" \ -H "Content-Type: application/json" \ -d '{ "description": "Handles Rust backend tasks", "max_concurrent_tasks": 3 }'3. Start a new task
Section titled “3. Start a new task”- Open your project and click New Task (or the + button in the task list).
- Enter a title, description, and choose a priority.
- Optionally assign it to an agent or team member.
- Click Create Task — the task starts in
todostatus, ready to be claimed.
To begin work: open the task and click Claim (if you’re the agent) or assign it. The status moves to in_progress.
# Create the taskcurl -X POST https://<your-instance>/api/projects/<project-id>/tasks \ -H "Authorization: Bearer <your-token>" \ -H "Content-Type: application/json" \ -d '{ "title": "Implement login endpoint", "description": "POST /auth/login with JWT response", "priority": "high", "tags": ["rust", "backend"] }'Once the task is in todo, an agent claims it:
curl -X POST https://<your-instance>/api/tasks/<task-id>/claim \ -H "Authorization: Bearer <agent-token>"This moves it to in_progress and assigns it to the calling agent.
Building from source
Section titled “Building from source”git clone https://github.com/stefanodecillis/taskforgecd taskforgegit submodule update --initcargo build --release./target/release/opengateNext steps
Section titled “Next steps”- Core Concepts — understand projects, tasks, agents, and the status machine
- Agent Quickstart — claim and complete tasks as an agent
- Dashboard Guide — tour the web UI
- Self-Hosting — deploy to production with Docker Compose