Self-host with Docker · Public Beta

Project Management That Works for Developers

The project management tool we wanted to use ourselves — and we use it every day to build our own products. Local-first, and keeps working through brief connection drops.

Get Started

cp .env.example .env, set DB_PASSWORD and JWT_SECRET_KEY, then docker compose up → localhost:8151 (first run downloads images: a few minutes). Data stays on your machine.

Join the waitlist for updates

For developers with Docker experience. No desktop app download.

View source on GitHub
📊 Dashboard
📋 Tickets
📅 Gantt
📖 Wiki
Dashboard
12Open
8In Progress
23Resolved
47Closed
SENN-042Prepare release checklistIn Progress
SENN-041Link wiki pages to ticketsOpen
SENN-040Landing page designResolved
SENN-039Dark mode toggleClosed
Getting Started

Run SENN on Your Machine

Clone the repo, start Docker, and create your first ticket — no SaaS account required.

Public Beta — SENN is usable, but bugs and missing features remain, and behavior may change between updates. Back up your data before updating: a database upgraded to a newer version cannot be used with an older version again. Older releases stay available as tags (e.g. v0.1.1, the last release before the access-control redesign).

Prerequisites

  • Docker & Docker Compose (e.g. Docker Desktop)
  • Port 8151 free on localhost
  • Git and bash (Terminal on macOS/Linux; WSL2 on Windows)
  1. 1

    Clone, configure, and start

    Clone the repository, copy .env.example to .env, and fill in DB_PASSWORD and JWT_SECRET_KEY — the sed line below generates random values for you (macOS / Linux / WSL). Then start with Docker Compose. It stops right away with a clear message if either value is empty.

    git clone https://github.com/macplanning-labs/senn.git
    cd senn
    cp .env.example .env
    sed -i.bak "s|^DB_PASSWORD=.*|DB_PASSWORD=$(openssl rand -hex 24)|; s|^JWT_SECRET_KEY=.*|JWT_SECRET_KEY=$(openssl rand -base64 48 | tr -d '\n')|" .env && rm .env.bak
    docker compose up

    The first run takes a few minutes to download the pre-built images (depending on your connection). Keep this terminal open — closing it stops SENN. To build the images from source instead, use docker compose up --build (10–15 minutes the first time).

  2. 2

    Open the app

    Once the containers are up, open this URL in your browser:

    http://localhost:8151
  3. 3

    Sign up and log in

    When the login screen appears, if you do not have an account yet, do not log in — click Sign up at the bottom.

    SENN login screen
    Login screen — click Sign up at the bottom

    On the registration screen, fill in these fields, then click Sign up:

    • Username — at least 1 character; any letters including Japanese; must be unique
    • Email — a valid address (e.g. you@example.com)
    • Password — at least 8 characters
    SENN registration screen
    Registration — username (1+), email, password (8+ characters)

    When registration succeeds, you are signed in automatically and land on My tickets — no separate login needed.

    Only the first person (who set up the server) can sign up freely. Everyone after that joins by invitation — see step 6.

  4. 4

    Create a Team

    You need a team before creating tickets. The post-login My tickets screen shows a “Get started with SENN” panel — you can create the team right from there.

    Click the + next to Teams in the left sidebar (or click Create your first team — same result).

    The Create team dialog opens.

    Fill in the fields below and click Create.

    • Team name — required; any name is fine
    • Team prefix — optional. The start of ticket keys (e.g. SMP → SMP-000001). If blank, it is made from the letters and digits in the team name (TEAM if the name has none)
    • Icon, color, visibility (Public / Private), description, and notification webhook are optional (editable later)

    After creation, the team appears under “Teams” in the sidebar.

  5. 5

    Create your first ticket

    On the screen right after creating the team, click Create a ticket.

    The Team field already has your new team selected.

    Type a Title and click Create Ticket.

    • Title — required
    • Description — optional
    • Assignee, priority, due date, and other fields are optional (editable later)

    Open Tickets in the sidebar to see the new ticket in the list. That completes the first end-to-end flow.

  6. 6

    Invite teammates

    From the second person on, accounts are created by invitation. Open the team's Settings → Members, enter the person's email under Invite, choose Full Member (the default is Guest, which only lets them view this team), and click Send invitation.

    • If email is not configured (the default), SENN shows a link instead of sending mail. Send that link to the person yourself — it works once and expires after 7 days.
    • The person opens the link, chooses a username and password, and joins the team.
    • To let people sign up on their own, set SENN_INTERNAL_EMAIL_DOMAINS (requires email settings) or SENN_REGISTRATION_MODE=open (private networks only) in .env. See the README.

Notes by OS

macOS

Install Docker Desktop and run the commands in Terminal.

Linux

Use Docker Engine with the Compose plugin. No desktop installer needed.

Windows

Use WSL2 with Docker Desktop integration and run the commands inside the WSL shell. No .dmg or native Windows installer.

Screenshots

Sign up

Sign Up
Username
Email
Password
Create account

Team

Dashboard
Teams
Tickets
Teams + New Team
EngineeringActive
Design2 members

Ticket list

Teams
Tickets
Engineering New Ticket
ENG-001Set up local environmentIn Progress
ENG-002Define sprint goalsOpen
ENG-003Wiki onboarding pageOpen
GitHub README — Getting Started

For details (troubleshooting, port changes, backups), see docs/利用ガイド_OSS自己構築.md in the repository.

A Tool We Use Every Day

SENN is in production use at MacPlanning. Our development team uses it daily for project management, dependency tracking, and collaboration.

📋

Tickets & Dependencies

Record and track dependencies between tickets.

📅

Gantt Charts

Visualize project timelines and manage milestones.

📖

Wiki

Write down your team's procedures and decisions, linked to tickets.

Background

Why we built SENN

SENN started as a small tool for communication with new team members.

As collaboration needs grew, it became a project management tool with a clear design philosophy for tickets and projects, plus Japanese and English UI.

The current Rust-based, local-first version is what we use daily on internal projects—still improving week by week.

We reached this point in months through AI-driven development and two veteran SEs working side by side in production.

Features

What SENN Offers

Three key features.

⚡

Local-First Data

Your data is stored on the server you run (Docker). The browser keeps a local copy, so screens don't wait on the server every time, and changes sync in the background.

🎯

Unified PM in One Place

Tickets, dependencies, Gantt charts, and wiki in one tool.

📴

Keeps Working When the Connection Drops

Creating and updating tickets, projects, and wiki pages is saved in your browser first and sent to the server automatically when the connection comes back. Posting comments needs a connection, and SENN must already be open (it cannot be opened from scratch while offline).

Who This Is For

SENN is for:

  • Dev teams shipping complex products
  • Teams that want to keep their data on their own servers
  • Teams that would rather not add another SaaS

Not for:

  • Teams happy with cloud-only SaaS workflows
  • Non-technical project stakeholders
Status

Try via OSS Self-host

Self-host with Docker today — the full setup guide is on this page. Pricing and support terms will be announced at public launch.

Ready to get started?

View Get Started Guide

Get notified at launch

Join our waitlist to be notified the moment SENN is publicly available.

We'll notify you when SENN is available.