Run Tekio Delivery on your own machine
Two commands and a Jira API token. It runs entirely inside your network — nothing is sent anywhere. Budget about twenty minutes, most of it in the configuration wizard.
What you need
- Docker with Compose — Docker Desktop on Windows or macOS, Docker Engine on Linux
- 2 GB of RAM and about 5 GB of disk for the cache
- A Jira Cloud account that can read the projects you want to measure
- No Jira admin rights — read access is enough
No Jira at all? You can feed it CSV files instead — see step 5.
Pull the image and start it
Create a folder, drop in the compose file, and start. The image is public — no login, no account.
# 1 — compose file curl -O https://delivery.tekio.app/docker-compose.yml # 2 — a secret, so your Jira token is encrypted at rest echo "TEKIO_SECRET_KEY=$(openssl rand -hex 32)" > .env # 3 — start docker compose up -d
Open http://localhost:3000. First start pulls about 1.2 GB, so give it a minute.
Connect your Jira
In Jira, create an API token at id.atlassian.com → Security → API tokens. Then in Tekio Delivery, go to Settings → Connection and enter three things:
| Field | Example |
|---|---|
| Jira URL | https://yourcompany.atlassian.net |
| the account the token belongs to | |
| API token | the token you just created |
The token is encrypted with your own secret and stored in the container's volume. It never leaves your machine — without TEKIO_SECRET_KEY set, the app refuses to store it at all rather than writing it in the clear.
Onboard your first project
The wizard reads your Jira and proposes a mapping: issue types, the fields that hold team and story points, and which statuses count as in-progress. It ranks each candidate with evidence — how often the field is filled, what values it actually holds — so you're confirming, not guessing.
It won't let you finish until the configuration validates against your real issues. Pick Scrum or Kanban for a single team; that's the free tier, with no time limit.
SAFe mode — several teams on one programme, with the cross-team rollup — is what the licence unlocks. →
No Jira? Load CSV files instead
If your Jira is locked down, or you're on Azure DevOps or something else entirely, you can feed the product three CSV files instead of an API connection.
| File | One row per | Columns |
|---|---|---|
| issues.csv | issue | key, type, status, points, team, epic, created, resolved |
| transitions.csv | status change | key, from, to, timestamp |
| sprints.csv | sprint membership | sprint, key, start, end, added_at, removed_at |
Download the template pack — a filled example (Northwind Maritime) beside an empty file with the same columns. Open the filled one first; it's clearer than any schema documentation.
transitions.csv matters most. It's the status history, and it's where cycle time, flow efficiency, spillover and committed-versus-delivered come from. Without it you get counts and current state — a much poorer picture.
Updating
Atlassian changes the Jira API regularly, so an instance that stops getting updates will eventually break. Updating is two commands, and your configuration and cache are preserved in the volume.
docker compose pull docker compose up -d
If something goes wrong
| Symptom | Usually |
|---|---|
| Blank page on :3000 | Still starting. Check docker compose logs -f. |
| “Cannot store token” | TEKIO_SECRET_KEY isn't set in .env. |
| 401 from Jira | Email and token must belong to the same account. |
| Wizard finds no fields | The account can't see the project. Check permissions. |
| Charts are empty | First sync is still running — it reads changelogs, which takes a few minutes. |
The free tier comes with no support — that's the trade for free. Bugs are welcome as GitHub issues, and if you'd rather not do any of this yourself, I'll install it for you.