Self-hosted planning for software teams

Plans that nest.

Nested is a live outliner where every leaf is a task. Break a release into the work beneath it, give each task an owner and a size, and watch progress roll up the tree as your team works, on a server you run.

  • One-time license per server
  • Browser, desktop and terminal
  • Offline license check, no call home
A Nested document titled Platform v2.0 release. The outline breaks the release into API, Web app, Infrastructure and Launch, each with tasks assigned to marcus, priya, sofia, jun and alice, sized from XS to XL, and marked in progress, complete or blocked. Section headings show rolled-up status. The footer shows 5 users in the document.

How it works

An outline is already a plan.

Most plans start as a list, and most lists end up in a tool that wants forms, boards and custom fields. Nested keeps the list. The structure you type is the structure of the work.

01

Type the work, nest the detail

Enter adds a row. Tab nests it under the row above, Shift-Tab lifts it back out. Alt-Up and Alt-Down reorder tasks, or drag them by the bullet. It is a text editor first, so you plan as fast as you can type.

Click a bullet, or press Ctrl-Enter, to zoom into one branch. A big plan becomes a small, focused list, and the breadcrumb takes you back up.

Nested zoomed into the Web app branch. The breadcrumb reads Root, Platform v2.0: ship by Nov 14, Web app, and the view lists only that branch's three tasks.
02

Every leaf is a task

A row with no children carries an owner, a size and a status. Pick an assignee from the people the document is shared with, size it from XS to XL, and mark it in progress, blocked or complete. Each one is a click or a single shortcut away.

  • In progress
  • Blocked
  • Complete
The assignee menu open on the unassigned task Canary deploys for the API, listing Unassigned, alice, jun, marcus, priya and sofia.
03

Status rolls up the tree

A section's status is computed from its tasks, all the way to the top. If anything under it is in progress, the section is in progress. If work is stuck, it shows blocked. When the last task is done, the whole branch turns green.

Nobody updates a parent by hand, so the summary can't drift from the work. Finishing the last task in a section gets a small celebration, too.

  1. ⏳Platform v2.0in progress
    1. ⏳APIone task in progress
    2. ✖Infrastructureone task blocked
    3. ✔Docsevery task complete
    4. Launchnot started
Parents are never set by hand. Nested computes them from their children every time a row is drawn.
04

The story behind each task

Every task keeps an update log: short, timestamped notes from anyone on the document. The decision, the blocker and the link to the PR stay with the work instead of scrolling away in chat. The count on each row shows where the conversation is.

The update log for New onboarding flow, newest first: sofia, usability test Thursday with 5 customers; sofia, steps 1 to 3 behind the onboarding_v2 flag; jun, invite step can reuse the share dialog; sofia, wireframes approved in design review.
05

One document per project, shared on purpose

Keep the roadmap, each release, the incident follow-ups and the hiring plan as separate documents. Each one has its own sharing list: read-only, read/write or owner. People see the documents shared with them and nothing else.

The Documents screen listing Design system migration, Incident follow-ups, Mobile app beta, Platform team hiring plan, Platform v2.0 release, Q4 roadmap and Security review checklist, each with the viewer's role, its creator and when it was last edited.

Real-time

Everyone edits the same plan, at the same time.

No save button, no conflicts

Edits merge as they happen, character by character, using CRDTs. Two people typing in the same row, or reorganising the same branch, end up with the same document.

Typing never waits on the network

Every client holds a full copy of the open document, so edits appear instantly and sync in the background.

Undo is yours alone

Ctrl-Z undoes your own edits, never a teammate's, even when they were working in the same rows.

See who's there

The footer shows how many people have the document open. Shares, renames and role changes reach everyone without a refresh.

Browser, desktop, terminal

The same plan, wherever you work.

Nested has three interfaces built on one shared core, so they look alike, behave alike and use the same keys. Your server hands out the desktop and terminal clients already configured to reach it, so there is nothing to set up.

  • WebAny modern browser
  • DesktopWindows and macOS
  • TerminalLinux and Windows
The terminal UI, illustrated. It has the same outline, statuses and keys as the browser.

Keyboard first

Your hands never leave the keys.

The same shortcuts on every platform and in every interface.

Enter
New row
Tab Shift+Tab
Nest and un-nest
Alt+↑ ↓
Move a task among its peers
Ctrl+Enter
Zoom into a row
Esc
Zoom back out
Alt+X
Cycle status
Ctrl+G
Assign
Alt+S
Set the size
Alt+U
Open the update log
Ctrl+E
Export to plain text
Ctrl+Z Ctrl+U
Undo and redo
Shift+Enter
Line break in a row

Self-hosted

Your server. Your plans. Your keys.

Nested runs on a machine you choose. Plans never pass through anyone else's cloud, and the server never needs to reach ours.

$ tar -xzf nested-server-linux-x64.tar.gz
$ ./nested-server/nested-server
config: ~/.config/nested-server/nested-server.json (first-run)
first run: generated a key pair - certificate fingerprint (SHA-256) 3q2+7w…
first run: created the administrator account "admin"; its password is
  ••••••-••••••-••••••-••••••-••••••
# paste your license key into the config, then start it again
Linux and Windows archives, plus a Docker image.
  • Installs itself. The first run writes its configuration, generates its own keys and creates the administrator account.
  • Pinned connections. Desktop and terminal clients downloaded from your server trust only that server's certificate, so there's no certificate authority to compromise.
  • Careful with credentials. Passwords are stored only as bcrypt hashes, session tokens only as digests, and breached passwords are refused.
  • You decide who gets in. New accounts wait for an owner's approval, and each person's access level is a ceiling across every document.
  • No call home. Your license key is checked on the server, offline, at every start.
  • Take it with you. Export any document to plain text with one key.

Pricing

Pay once per server.

A license covers one server and every update in its major version. Seats are the people who can sign in. Clients and the web frontend are always included.

Small team

For a team getting started.

$60USD, one time

  • Up to 5 seats
  • Unlimited documents
  • Browser, desktop and terminal clients
  • Updates for the current major version
Buy Small team

Custom

For any other number of seats.

Let's talk

  • Any seat count, even unlimited
  • Unlimited documents
  • Browser, desktop and terminal clients
  • Updates for the current major version
Contact sales

Your license key arrives by email together with the server download. Need more than one server, or a trial key? Get in touch.

FAQ

Questions, answered.

How does the license key work?

A key is a short string you paste into the server's configuration file. It records how many seats you bought and which major version it covers, and it's signed so it can't be altered. The server checks it offline every time it starts. It never contacts us.

What counts as a seat?

Each approved account on your server uses one seat. Pending and rejected registrations don't. The server compares its accounts with your key at every start, and if you've outgrown your plan it asks for a key with more seats before it starts again.

What happens when a new major version ships?

Your key keeps working with every release in the major version it covers, indefinitely. To move to the next major version, you buy a key for it. Until then, nothing stops working.

Where can I run the server?

On Linux or Windows (x64), or with the Docker image. It's a single executable with its database beside it. If you enable the built-in web frontend, browsers can reach it directly or through your usual reverse proxy.

How do my teammates get the apps?

Your server has a downloads page. The desktop app (Windows, macOS) and terminal app (Linux, Windows) downloaded from it come set up to connect to your server, with its certificate pinned. Anyone with a browser can use the web frontend with no install at all.

Is Nested a replacement for our issue tracker?

It's built for planning: deciding what the work is, who has it, how big it is and where it stands. Keep your tracker for bugs and put the plan in Nested, where the shape of the work stays visible. Any document exports to plain text with Ctrl-E.

Can we try it before buying?

Yes. Ask for a trial key and we'll send one with the server download.

Ship the plan, not the spreadsheet.

Set up a server in minutes. Your team can be planning together the same afternoon.