Skip to content
Conduit

mcp server

VantaCore

Open-source, self-hosted Jira alternative — issue tracker, agile boards, sprints, docs with a local AI assistant and MCP server.

MateuszBochen/VantaCorecommunitylistedunreviewed

Set up

Runs on your computer. Pick your agent and operating system.

This project does not publish an install method we can turn into a config. Follow the README instead.

README

synced Oct 22, 2026

VantaCore

License: AGPL v3+ Status: beta Java 21 React 19 PRs welcome Buy Me a Coffee

Status: beta. VantaCore is usable day to day, but APIs, database schema and UI can still change between releases, and there is no automated test suite yet. Don't run it as the only copy of data you can't afford to lose — back up the database.

Open-source, self-hosted Jira alternative — an issue tracker and agile project management tool (Scrum & Kanban) for software teams.

VantaCore puts tickets, boards, sprints, releases and documentation in one place, with a built-in AI assistant over your docs that runs entirely on your own hardware (no external AI service required). If you are looking for a free, open-source alternative to Jira, YouTrack, Linear or Redmine that you can run on your own server, VantaCore is built for exactly that.

Features

Planning & tracking

  • Projects and sub-projects, with per-project issue types, statuses, workflows, custom fields and flags
  • Tickets with hierarchy (parent/child), related tickets, assignees, tags, estimates and progress roll-up
  • Boards, sprints (burndown, sprint report), releases and a cross-project roadmap
  • Worklog with a start/stop timer, comments with @mentions, test cases, file attachments
  • Full ticket history with previous-version view; full-text search across projects and tickets

Documentation

  • Versioned platform and sub-project documentation with a Markdown editor (Mermaid diagrams supported)
  • "Ask the docs": semantic search + answers generated by a local LLM via Ollama (pgvector embeddings)

Automation & integrations

  • Automation engine (trigger → condition → action rules, with execution log)
  • Outgoing webhooks with delivery log
  • VCS integration — branches, commits and pull requests shown on the ticket
  • CSV import / export and imports from external tools
  • MCP server (/api/mcp) — connect Claude or any other MCP client and work with VantaCore from an AI assistant, with exactly the permissions of the user who owns the token

Administration

  • Roles with fine-grained permissions, audit log
  • SSO: Microsoft Entra ID, Google, GitHub and generic OIDC
  • Personal access tokens for scripts and integrations
  • In-app notifications (instant or digest), realtime updates over WebSocket

Tech stack

PartStack
Api/Java 21, Spring Boot 3.3, PostgreSQL 16 + pgvector, Flyway, JWT
Front/React 19, TypeScript, Vite, Tailwind CSS, shadcn/ui, Tiptap
AIOllama (bge-m3 embeddings, qwen2.5:3b-instruct generation — CPU-friendly)
DeployDocker Compose, Caddy (automatic HTTPS) for staging/production

The backend follows hexagonal architecture / DDD with a custom command, query and event bus — see Api/CLAUDE.md for the architecture guide.

Quick start (local development)

Requirements: Docker with Docker Compose and roughly 8 GB of free RAM (the local LLM runs on the CPU, no GPU needed). The first start downloads the Ollama models (a few GB), so the "ask the docs" feature becomes available only after that finishes.

git clone https://github.com/MateuszBochen/vantacore.git
cd vantacore
docker compose -f .deploy/docker/docker-compose.yml up -d
ServiceURL
Frontendhttp://localhost:5173
APIhttp://localhost:8083
Swagger UIhttp://localhost:8083/swagger-ui.html
pgAdminhttp://localhost:5050

Then open http://localhost:5173/registration and create the first administrator account (this works only once — after an admin exists, further users are created from the admin panel).

The dev stack runs the API with the dev Spring profile, which supplies public, insecure default secrets and enables Swagger UI and debug logging. Never expose it to the internet.

The API container compiles and reloads the bind-mounted sources on change and exposes a remote debugger on port 5005. To work on the frontend outside Docker:

cd Front
npm install
npm run dev        # http://localhost:5173, talks to the API at http://localhost:8083

Deployment (staging / production)

.deploy/docker/docker-compose.staging.yml runs prebuilt images behind Caddy, which serves both the API and the frontend on one domain and obtains a Let's Encrypt certificate automatically.

cd .deploy/docker
cp .env.staging .env.production   # fill in real values (.env.production is gitignored)
./build.sh
docker compose -f docker-compose.staging.yml --env-file .env.production up -d

Configuration

The API refuses to start without the secrets below (outside the dev profile).

VariableRequiredDescription
JWT_SECRETyesSigning key for login tokens — openssl rand -base64 48
CREDENTIAL_ENCRYPTION_KEYyesEncrypts stored secrets (SSO, VCS, webhooks, imports). Keep it stable — changing it makes stored secrets unreadable
DOMAINyesPublic hostname Caddy gets the HTTPS certificate for
CORS_ALLOWED_ORIGINSyeshttps://<DOMAIN>
APP_PUBLIC_BASE_URLnoPublic API URL, used in VCS webhook URLs (default http://localhost)
APP_FRONT_URLnoPublic frontend URL, used as the SSO redirect target
JWT_EXPIRATIONnoToken lifetime in ms (default 3600000)
SWAGGER_UI_ENABLEDnotrue to expose Swagger UI (default false)
OLLAMA_BASE_URLnoPoint to an external Ollama instance instead of the bundled one
OLLAMA_EMBEDDING_MODEL / OLLAMA_GENERATION_MODELnoOverride the models (changing the embedding model requires a migration + reindex)

The compose file passes only the required variables to the API container — to set any of the optional ones, add them to the environment: section of the api service in docker-compose.staging.yml.

Database migrations run automatically on startup (Flyway).

Upgrading and backups

Back up before every upgrade — migrations are forward-only.

# database
docker exec vantaCore-staging-db pg_dump -U vantacore vantacore > vantacore-$(date +%F).sql
# uploaded files live in .data-staging/storage/ — copy that directory as well

git pull
./build.sh
docker compose -f docker-compose.staging.yml --env-file .env.production up -d

Connecting an AI assistant (MCP)

VantaCore exposes an MCP server over Streamable HTTP:

EndpointTools
/api/mcpEvery API operation as its own tool
/api/mcp/compactThree generic tools (list / describe / call operation) — for clients that struggle with many tools

Create a personal access token in VantaCore and have the client send it as Authorization: Bearer vc_pat_.... Every tool call runs as that user, with exactly their permissions. For example, with Claude Code:

claude mcp add --transport http vantacore https://<DOMAIN>/api/mcp \
  --header "Authorization: Bearer vc_pat_..."

Repository layout

Api/              Spring Boot backend
Front/            React frontend
.deploy/docker/   Docker Compose files (dev + staging), Caddyfile, image build script

Contributing

Contributions are welcome — please read CONTRIBUTING.md first. Contributors need to accept the Contributor License Agreement.

Bug reports and feature requests go to GitHub Issues.

Security

Please don't report security vulnerabilities in public issues. Use GitHub's private vulnerability reporting instead.

Support the project

VantaCore is developed in my free time. If it saves you a Jira subscription or you simply like it, you can support further development here:

Buy Me a Coffee   buycoffee.to

Buy Me a Coffee works worldwide (cards, Apple Pay / Google Pay); buycoffee.to is the option for supporters in Poland (BLIK, Polish bank transfers).

Starring the repo ⭐ and reporting issues helps a lot too.

License

VantaCore is licensed under the GNU Affero General Public License v3.0 or later — see LICENSE, with additional terms in NOTICE. In short: if you run a modified version as a network service, you must publish its source, and the "Powered by VantaCore" attribution must stay visible in the UI.

The name "VantaCore" and its logo are not covered by the code license — see TRADEMARKS.md.

Copyright © 2026 Mateusz Bochen

Screenshots

↑↓ navigate openesc close