Rate-limit the export endpoint
Work management for teams that ship software
Projects, boards, backlogs and sprints, a Gantt that draws the dependencies between them, and a GitHub connection that keeps the tracker and the repository telling the same story — inside an organization whose administrators decide who can see what.
Every capability on this site is one implemented in the product. Nothing here is a mock-up of something planned.
An illustration of a Vorkhurry project board with four columns — To do, In progress, In review and Done — holding issue cards. Each card shows its issue key, title, priority, estimate and assignee; two cards carry a linked pull request.
What Vorkhurry does
One system for planning the work, doing it, and knowing where it is
Vorkhurry takes the concepts that earned their place in Jira and Linear and puts them on one architecture, with the organization model a company actually needs underneath.
Nine views per project
Overview, Board, Backlog, Sprints, List, Calendar, Gantt, Members and Settings. All nine are built — none is a placeholder.
GitHub, connected properly
A GitHub App scoped to the repositories you install it on. Branches, commits and pull requests land on the issues they name.
AI on your own key
Eleven assists across issues, projects and sprints — running on your organization's OpenAI, Anthropic or Gemini account.
Roles that mean something
146 named permissions, 20 role templates, groups, per-member overrides, and a view that answers what one person can actually do.
Reports from real events
Throughput, cycle time, flow efficiency, burndown, velocity and cumulative flow — computed, not estimated.
One search across everything
Issues, projects, epics, sprints, people, documents, comments, meetings and announcements in one ranked, permission-filtered result set.
Isolation you can check
Tenant scoping in one place, PostgreSQL row-level security as an independent backstop, and an append-only audit log.
End to end
From an empty workspace to a finished project
Every step below is a screen in the product. Nothing in this sequence is aspirational.
- Create the organizationSignup creates a workspace, not just a user
- Create a projectWith its own key, members and workflow
- Build the backlogOr import it from Jira, Linear or a CSV
- Plan the sprintThe commitment is snapshotted at start
- Do the workBoard, list, calendar — and the repository
- Track the scheduleGantt, dependencies and milestones
- Read the reportsBurndown, velocity, cumulative flow
- Complete the projectWith the activity and audit history intact
Planning
See the whole project, and what it is waiting on
A dependency-aware timeline per project: bars from start and due dates, milestones, progress, and finish-to-start arrows between blocked work.
The schedule at a glance
Every issue with a start and a due date is a bar on one axis, with milestones sitting on the same axis and progress filling the bar.
Dependencies, drawn
Scheduling links between issues, resolved per project as the edge set the Gantt view draws — and checked for cycles.
Conflicts you can act on
A dependency that would create a cycle is rejected. A cycle in a schedule is not a drawing problem — it is a plan that cannot be executed in any order.
One project's own order
A project's chart orders only its own issues. A link reaching outside it is recorded without reordering someone else's plan.
Development
The board and the repository stop disagreeing
Issue keys in a branch name, a commit message or pull-request text are matched against your own project keys and recorded as activity on those issues.
- TicketVOR-118 on the board
- Branchfeature/VOR-118-swimlanes
- CommitVOR-118: swimlane grouping
- Pull requestMoves to In review
- MergeMoves to Done
Installed, not authorised
Connected as a GitHub App, scoped to the repositories you install it on. Only the installation id is stored; every call mints a fresh token that expires in an hour.
Your keys, your projects
Keys found in a branch, a commit or a pull request are intersected with your organization's project keys, so someone else's numbering scheme never matches yours by accident.
Transitions you allowed
Map a pull-request event to a status — opened to In Review, merged to Done. The move runs through the workflow's own guards, so a transition you have not allowed is skipped rather than forced.
GitHub is the version-control integration that exists today. GitLab and Bitbucket are not implemented.
AI assist
Your provider. Your key. Your models.
An administrator connects OpenAI, Anthropic or Google Gemini with the organization's own API key. There is no shared Vorkhurry key, and the key never leaves the server — the API returns a masked suffix only.
An organization administrator
AI is off until someone turns it on
Connects a provider
OpenAI, Anthropic or Google Gemini
With your own API key
Encrypted at rest; the API returns a masked suffix only
Selects models and a budget
Allow-list, a default, per-feature overrides, a monthly cap
AI assist across Vorkhurry
Eleven actions on issues, projects and sprints
There is no shared Vorkhurry key
Model usage runs on your organization's own provider account and is billed by that provider. Vorkhurry does not resell, subsidise or proxy anyone's model usage.
Models, allow-lists and budget
Choose which models are enabled, set a default and per-feature overrides, and cap monthly spend. Every call is recorded, so usage is a number you can look at.
Suggestions are reviewed, not applied
Output arrives as a suggestion you accept or reject. Applying it is a second, deliberate step — nothing a model wrote edits your issues on its own.
Communication
The events that matter, where your team already is
Issue, comment and sprint events are dispatched from the same domain event bus the rest of the product runs on, routed per project, and delivered on a background queue — so a chat outage never slows the application down.
Something happens in Vorkhurry
An issue is created, assigned or transitioned; a comment is added; a sprint starts or completes
Notification routing
Per-integration event subscriptions, per-project channel routing, and a default channel
Slack
OAuth bot token · chat.postMessage
Microsoft Teams
Incoming Webhook · MessageCard
Choose the events
A connected workspace subscribes to the event types it wants. The published events are issue created, updated, deleted, assigned, transitioned and moved; comment added, updated and deleted; project updated; and sprint started and completed.
Route per project
Send one project to its own channel and everything else to a default. Teams supports several channels by giving each webhook URL a label.
Failures stay contained
Delivery runs as a background job. A provider that rejects a message marks the integration as errored rather than retrying into a storm.
Migration
Bring your existing work into Vorkhurry
Every source record becomes a row with its own status, so an import is resumable, reports errors per row, and a re-run updates what it already created instead of duplicating it.
- Jira, Linear or CSVAPI credentials, or a file
- PreviewSee the rows before anything is written
- MapSource statuses onto your workflow
- ValidatePer-row checks and conflict detection
- VorkhurryCreate, update or skip — per row
Resumable by design
Every source record is its own row with its own status. Already- imported rows are skipped on a re-run, and a re-run updates what it created rather than duplicating it.
Errors that name the row
A record that fails validation reports why, on that record — not as one failure for the whole job.
What this is not
An issue import, not a full-fidelity migration of every field, workflow and add-on a mature instance accumulates. Preview the rows and check the mapping before you run it.
Organization
Access that survives the org chart changing
146 permissions in a named catalogue, 20 role templates from Owner to Guest, per-member overrides, and an effective-permission view that answers what one person can actually do.
Organization
Every account belongs to one; there is no path in without one
Departments, teams and groups
Plus designations, skills and reporting lines
Roles and permissions
146 permissions, 20 role templates, per-member overrides
Projects
Members are added to the projects they work on
Work
Issues, sprints, documents — visible to exactly who should see them
Administrators decide, not defaults
Roles carry no hierarchy — a role is exactly the permissions granted to it, so "manager" never quietly implies something nobody granted. Permissions that let a holder escalate their own access or read sensitive personal data are flagged as such and audited when granted.
Answer "what can this person do?"
An effective-permission view resolves a member's roles, group memberships and overrides into the one answer that matters, instead of leaving you to work it out from three screens.
Audit log
An append-only record of settings changes, membership changes, role changes, permission overrides, invitations and ownership transfer — with the actor, the outcome, and what changed.
Start with your team, not with a sales call
Create a workspace, invite the people you work with, and bring your existing issues in from Jira, Linear or a CSV.