Pick a shift.
Volunteer at the food bank. Book a place below. This page is the working app, and the sections after it explain the services and the GitLab Duo automation built around it.
Loading shifts
Open shifts
Demo data. Please use an example.org address, not a real one. Shifts reset whenever the app is redeployed.
Four services
Each one is its own small Python service with its own tests and container. A signup goes from this form to signup_listener, then to shift_api. A reminder goes from notify to shift_api and vault_mock.
-
signup_listener
Receives the signup form, turns it into a booking and passes it on. It also serves this page.
Public
Local port 8002
-
shift_api
Owns the shifts and the signups. Everything else depends on its contract, which a script checks on every change.
Private
Local port 8001
-
notify
Sends shift reminders (simulated) using a key it fetches from the vault.
Private
Local port 8003
-
vault_mock
A fake secrets store that can create, rotate and revoke keys, so secret rotation can be practised safely.
Private
Local port 8004
Private means the service is closed to the open internet. Only the other services, which sign each call with a Google identity token, and people signed in to the project can reach it.
What GitLab Duo does here
Seven custom flows and one custom agent. In each flow a script decides, the flow acts on the result, and a person merges. A flow that cannot pass the project's own checks opens no merge request and says so.
-
Contract Guardian
- Starts when
- A merge request is created or marked ready
- What it does
- Finds the services a change would break, comments, and opens a fix merge request for each
- A person
- Reviews and merges each fix
-
Incident to Release
- Starts when
- An incident is created
- What it does
- Names the likely commit, posts a plan, opens a fix, and proves it on a staging canary
- A person
- Merges the fix and approves the production deploy
-
Carbon Optimizer
- Starts when
- A pipeline on the default branch passes
- What it does
- Estimates the pipeline's energy use and removes avoidable CI work without removing a test
- A person
- Reviews the numbers and merges
-
IaC Policy Fixer
- Starts when
- A merge request is created
- What it does
- Checks changed Terraform and Kubernetes files and fixes the safely fixable violations
- A person
- Merges, and records any intended exception
-
Docs Drift Fixer
- Starts when
- A merge request is approved
- What it does
- Rewrites documentation lines made stale by a renamed variable, flag or field
- A person
- Merges the docs change
-
Issue Triage
- Starts when
- An issue is created
- What it does
- Proposes labels, links likely duplicates and drafts a reply
- A person
- Approves before anything is posted
-
Secret Rotation
- Starts when
- The flow is mentioned in a comment
- What it does
- Replaces hard-coded secrets with vault references and opens a merge request
- A person
- Merges, runs the rotation job, and confirms the old key's revocation
-
Release Notes agent
- Starts when
- You ask it in GitLab Duo Chat
- What it does
- Drafts release notes from the merge requests between two versions
- A person
- Reads and edits the draft
Without AI, the pipeline also verifies service contracts, estimates each run's carbon cost, picks a low-carbon time for releases, builds a hashed evidence pack for each production release, and watches a release for 24 hours.
See it in GitLab
The flows run in GitLab, not on this page. These links go to the project, where their sessions, merge requests and pipelines are.
Flow sessions are under AI then Sessions in the project, for people with access.