Brokoli
Getting Started

Quick Start

Create and run your first pipeline in 5 minutes.

Create and run your first pipeline in 5 minutes.

1. Start the server

broked serve

Open http://localhost:8080 in your browser.

On first launch, Brokoli runs in open mode -- no authentication is required. This happens when no users exist in the database and no --api-key flag is set. All API endpoints are accessible without credentials so you can complete the initial setup.

2. Create your admin account

Create your first user account. The first user is always promoted to the admin role, regardless of what role you specify:

Via the UI:

  1. Click Settings in the sidebar
  2. Go to Users and create your first user with the admin role
  3. Log in with your new credentials

Via the API:

curl -X POST http://localhost:8080/api/users \
  -H "Content-Type: application/json" \
  -d '{"username": "admin", "password": "Str0ngPasswd!", "role": "admin"}'

The password must be at least 10 characters and contain an uppercase letter, a lowercase letter, and a digit.

Once the first user exists, open mode is disabled and all subsequent API requests require a valid JWT token. To create additional users, you must authenticate as an admin first:

# Log in to get a JWT token
curl -X POST http://localhost:8080/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{"username": "admin", "password": "Str0ngPasswd!"}'

# Use the token to create another user
curl -X POST http://localhost:8080/api/users \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <token-from-login>" \
  -d '{"username": "alice", "password": "AlicePass123", "role": "editor"}'

Available roles: admin, editor, viewer.

3. Create a pipeline

Click Pipelines in the sidebar, then New Pipeline.

You'll see the visual DAG editor. Let's build a simple pipeline that fetches user data from a public API:

  1. Drag a Source API node onto the canvas

    • Name: Fetch Users
    • URL: https://jsonplaceholder.typicode.com/users
    • Method: GET
  2. Drag a Transform node onto the canvas

    • Name: Select Fields
    • Add a rule: drop_columns with columns address, company
  3. Drag a Sink File node onto the canvas

    • Name: Save CSV
    • Path: /tmp/users.csv
    • Format: csv
  4. Connect the nodes by dragging from one node's output port to the next node's input port

  5. Click Save

4. Run the pipeline

Click the Run button (play icon) in the toolbar. You'll see real-time progress:

  • Each node turns green as it completes
  • Row counts appear on the edges
  • Logs stream in the bottom panel

5. View results

Go to the Runs page to see your pipeline's execution history. Click a run to see:

  • Per-node status and duration
  • Row counts at each stage
  • Data preview for each node's output
  • Full execution logs

Check your output file:

head -5 /tmp/users.csv

You should see 10 rows of user data from jsonplaceholder.typicode.com with the address and company columns removed.

What's next