TaskNebula is an open-source issue tracker for teams that want Linear-style speed, Jira-style depth, and optional AI assistance without giving up control of their data. Run it with Docker, bring your own OpenAI or Anthropic key, or keep AI disabled and use the built-in native planner.
Quick start · Mobile app · Features · Docker image · Deployment · Docs
Pick the path that matches where you are deploying.
| Path | Best for | Command |
|---|---|---|
| One-command Docker | Fresh Linux VM or homelab server | curl -fsSL https://raw.githubusercontent.com/neuraparse/tasknebula/main/scripts/quickstart.sh | bash |
| Docker Desktop | Local Mac, Windows, or Linux PC | curl -fsSLo compose.yml https://raw.githubusercontent.com/neuraparse/tasknebula/main/docker-compose.desktop.yml && docker compose up -d |
| Pinned production | Repeatable self-hosted releases | TASKNEBULA_IMAGE=neuraparse/tasknebula:<tag> docker compose up -d |
| Source checkout | Local development or patching | Follow Development; environment provisioning is required before Compose |
After boot, open http://localhost:3000 and finish the first-run admin wizard.
./scripts/tasknebula-backup.sh
docker compose pull web && docker compose up -d
TASKNEBULA_IMAGE=neuraparse/tasknebula:<tag> docker compose up -dFor production hardening, reverse proxy setup, LiveKit, SMTP, OAuth, backups, and self-update details, use docs/DEPLOYMENT.md.
| Area | Highlights |
|---|---|
| Project management | Kanban, backlog, sprints, epics, subtasks, custom fields, issue links, attachments, imports |
| Collaboration | Comments, reactions, docs, project chat, presence, realtime updates, collaborative editing |
| AI assistance | Draft/issue assist, cited workspace Ask, native planner, agent activity, fail-closed previews |
| Admin & governance | Multi-org roles, audit logs, registration controls, webhooks, API-key and policy scaffolding |
| Analytics | Burndown, velocity, cycle time, throughput, project health, time-in-status, dashboard cards |
| Self-hosting | Docker-first deploy, Postgres, Redis, health checks, durable work reconciler, optional voice/cron |
Importers currently cover Jira, Linear, GitHub, and CSV.
- AI is opt-in. Configure workspace or platform keys from the admin UI. OpenAI and Anthropic are supported, and the native planner works without an external LLM.
- Self-hosted by default. Your app, database, Redis, uploads, and optional voice server run in your own environment.
- 30 locale catalogs included. Browser/device auto-detection, persisted language choice, native-name switching, and RTL support for Arabic and Hebrew are built in. Catalog/ICU parity is automated; linguistic review continues for legacy copy.
Native mobile apps are on the way. Availability details will be shared when they are ready.
| Item | Value |
|---|---|
| Repository | neuraparse/tasknebula |
| Recommended tag | latest for demos; use a release tag for repeatable installs |
| Platform | linux/amd64 |
| Runtime port | 3000 |
| Health endpoint | GET /api/health |
| Required services | PostgreSQL 16 + pgvector, Redis 7 |
| Optional services | LiveKit voice profile, scheduled-product cron, SMTP, experimental OAuth, OpenAI / Anthropic keys |
| Inspect digest | docker buildx imagetools inspect neuraparse/tasknebula:<tag> |
TaskNebula is designed around a small production surface:
web: Next.js standalone runtimepostgres: PostgreSQL 16 with pgvectorredis: cache, realtime fan-out, and background coordinationapproval-reconciler: durable approval-effect delivery and project-agent run recovery- optional
livekit(voiceprofile): voice rooms - optional
cronprofile: standup, janitor, embeddings, rollover, and version checks
First generate an ignored .env with unique database, Redis, auth, and LiveKit
credentials (bash scripts/setup.sh does this interactively). Compose refuses to
start when required secrets are absent. Voice remains disabled unless the
voice profile and its URLs are configured. Then use:
docker compose up -d
docker compose ps
curl -fsS http://localhost:3000/api/health
docker compose logs -f webUse TASKNEBULA_IMAGE=neuraparse/tasknebula:<tag> when you want a pinned,
repeatable deployment. Use latest only for quick demos.
| Need | Link |
|---|---|
| Full release history | CHANGELOG.md |
| Documentation index | docs/README.md |
| Current status | docs/STATUS.md |
| Deployment guide | docs/DEPLOYMENT.md |
| Architecture | docs/ARCHITECTURE.md |
| Agent runtime contract | docs/AGENT_RUNTIME.md |
| Roadmap | docs/ROADMAP_2026.md |
| Release process | docs/RELEASE.md |
| Contributing | CONTRIBUTING.md |
| AI agent/project guide | CLAUDE.md |
For an interactive fresh-clone setup, run bash scripts/setup.sh. It installs
dependencies, provisions ignored environment files, generates local secrets,
and can start PostgreSQL/Redis and apply migrations.
The equivalent manual flow is:
cp .env.example .env
cp apps/web/.env.example apps/web/.env.local
# Populate AUTH_SECRET/NEXTAUTH_SECRET, POSTGRES_PASSWORD, REDIS_PASSWORD,
# LIVEKIT_API_KEY, and LIVEKIT_API_SECRET with unique random values. The setup
# script performs this wiring automatically and is the recommended path.
# DATABASE_URL in apps/web/.env.local must use the same generated Postgres
# credentials; setup.sh also performs this URL-safe wiring.
pnpm install
docker compose up -d --wait postgres redis
pnpm db:migrate
pnpm --filter @tasknebula/web devFor bundled voice, set LIVEKIT_URL and NEXT_PUBLIC_LIVEKIT_URL, then run
docker compose --profile voice up -d. The base stack does not open LiveKit's
host-network listeners.
The root pnpm dev starts every workspace, including the optional Hocuspocus
collaboration service; use its documented environment contract before choosing
that command.
Before pushing code, run:
pnpm --filter @tasknebula/mcp-server build
pnpm i18n:check
pnpm hygiene:check
pnpm ui:check
pnpm docs:check
pnpm type-check
pnpm lint
pnpm test
pnpm --filter @tasknebula/web openapi:check
git diff --checkMIT. See LICENSE.
Built by Neura Parse · Powered by open source