Vekt
Self-hosted applicant tracking

Self-hosted ATS

A self-hosted ATS is applicant tracking software you run on servers you control. Candidate CVs, scores and emails sit in your database, under your backups and your deletion rules, rather than in a vendor's cloud.

Vekt is a self-hosted ATS you can install with one command. It covers job listings, a careers page, applications with CV upload and screening questions, a candidate pipeline, recruiter accounts and candidate emails, and adds AI screening that never rejects anyone without a person deciding.

It is open source under the MIT licence, so there are no per-seat or per-job fees, and you can read the code that handles every candidate.

What Vekt covers from a typical ATS

Vekt calls itself a recruitment orchestration engine because the workflow behind each candidate is explicit and inspectable. In practice it does the core of what people mean by an ATS, and leaves out some of what larger suites add.

ATS features in Vekt today

Checked against the code in the Vekt repository on 25 October 2026.

ATS featureIn VektHow
Job listings and careers pageYesPublic jobs page with a readable URL for each job
Application form with CV uploadYesPDF up to 5 MB, stored outside the web root
Screening questionsYesSingle- and multiple-choice questions per job
Candidate pipelineYesApplied, shortlisted, needs review, accepted, rejected
AI screeningOptionalOpenAI, OpenRouter or a local model via Ollama; low scores go to human review
Candidate emailsYesEditable templates, sent after a delay you set, cancelled if the decision changes
Recruiter and admin accountsYesRole-based dashboards
Data retentionYesCandidates and CVs deleted automatically after the period you set
APIYesREST API with Swagger documentation
Interview scheduling, calendar syncNoUse your existing calendar
Job-board multipostingNoShare the job's URL instead
Single sign-on (SSO)NoEmail and password accounts

What hosting your ATS yourself changes

Self-hosting moves three decisions from a vendor to you: where candidate data lives, which AI sees it, and when it is deleted.

Your data, your location

The database and CV files sit on infrastructure you choose, in the country you choose. Backups and access follow your own policies, not a vendor's terms.

Your choice of AI

Score CVs with a hosted model, a local model through Ollama, or no AI at all. Direct identifiers are removed from CV text before any model sees it.

Deletion you can verify

A scheduled job deletes candidate records and CVs once your retention period ends, and you can read the code that does it.

No per-seat pricing

The MIT licence has no user, job or candidate limits. You pay for the server and the time to run it.

Run Vekt in about 15 minutes

You need a server with Docker (Compose v2) and openssl. The setup script downloads the files, generates secrets, asks for your admin login and starts everything.

From an empty server to your first job

  1. Run the setup script on your server:
    curl -fsSL https://raw.githubusercontent.com/Behnoudmst/vekt/main/setup.sh | bash
  2. Open port 3000, or put your domain and HTTPS in front of it with a reverse proxy.
  3. Sign in as admin, set the retention period and email templates, and add recruiter accounts.
  4. Choose the AI provider in .env: ollama keeps CV text on your servers; mock is the default and assesses nothing.
  5. Publish a job and share its link.

Prefer not to pipe a script to bash? The manual steps download the Compose file and an example .env instead.

When a self-hosted ATS is the right call, and when it isn't

A good fit

You hire in the EU and want candidate data under your control, you want AI screening without sending CVs to a third party, you have someone who can run a Docker service, and you would rather not pay per recruiter.

Not a good fit

You need interview scheduling, job-board multiposting or SSO today, or nobody on the team can keep a server updated and backed up. A hosted ATS will serve you better.

Frequently asked questions

What is a self-hosted ATS?

An applicant tracking system you install on servers you control instead of renting it as a hosted service. Your organisation runs the application and its database, decides where candidate data is stored, and controls updates, backups and deletion.

Is Vekt an ATS?

It covers the core of one: job listings with a public careers page, an application form with CV upload and screening questions, a candidate pipeline (applied, shortlisted, needs review, accepted, rejected), recruiter and admin accounts, and candidate emails. Vekt calls itself a recruitment orchestration engine because that workflow is explicit and inspectable. It does not include interview scheduling, calendar integration or job-board multiposting today.

What do I need to self-host Vekt?

A server with Docker (Compose v2) and openssl. The setup script downloads the Compose file, generates secrets and starts two containers: the application on port 3000 and Inngest for background jobs. Data lives in a SQLite database and an uploads volume. You put your domain and HTTPS in front of it.

Does candidate data leave my server?

That depends on how you configure it. With AI scoring on a local model through Ollama, CV text stays on your infrastructure. With OpenAI or OpenRouter, the CV text, with direct identifiers removed, is sent to that provider. Candidate emails are sent through Resend, so email addresses and message content pass through it.

Is a self-hosted ATS GDPR-compliant?

No software is compliant by itself. Self-hosting lets you decide where candidate data is stored and when it is deleted; your lawful basis, privacy notice, DPIA and answers to candidate requests remain your obligations. Vekt provides retention windows and automatic deletion, not compliance.

What does a self-hosted ATS cost?

Vekt itself is free under the MIT licence, with no per-seat or per-job fees. Your costs are the server, the time to run and update it, and the AI provider if you use one. Scoring on a local model through Ollama needs a machine that can run that model.

Self-hosting gives you control over candidate data. It does not make anyone compliant: the obligations that come with screening applicants, under the GDPR and the EU AI Act, stay with the organisation running the software.

Read what GDPR asks of a hiring system and how the EU AI Act treats AI CV screening before you put Vekt in front of real applicants. The code and its documented limits are on GitHub.