> ## Documentation Index
> Fetch the complete documentation index at: https://www.mill.fyi/llms.txt
> Use this file to discover all available pages before exploring further.

# Mill

> A self-hosted task list for teams.

export const Screenshot = ({light, dark, alt, caption, width, height, sizes, portrait = false}) => <figure className={portrait ? "oss-doc-screenshot oss-doc-screenshot-portrait" : "oss-doc-screenshot"}>
    <div className="oss-product-light">
      <img src={light} alt={alt} width={width} height={height} sizes={sizes} loading="lazy" />
    </div>
    <div className="oss-product-dark">
      <img src={dark || light} alt={alt} width={width} height={height} sizes={sizes} loading="lazy" />
    </div>
    {caption ? <figcaption>{caption}</figcaption> : null}
  </figure>;

Mill is a self-hosted task list for teams and their clients. Run an API image and a UI image connected to your PostgreSQL database. An optional Compose overlay supplies PostgreSQL when you need it. Ordinary task management needs no LLM key, external runtime, or paid service.

Create boards and track work through six fixed statuses: Backlog, Todo, In Progress, In Review, Done, and Won't Do. Tasks have Task or Bug types, stable identifiers, Markdown descriptions, optional human assignees, priorities, start and due dates, comments, and activity. Search, combine filters, sort, and page through each board's list. Completed tasks leave the default list after 24 hours but remain available through an explicit status filter or direct link.

People sign in with their own accounts. Administrators manage invitations and roles; assignment and mention notifications stay in the app. Optional SMTP enables invitation, verification, and password-reset email. Without SMTP, administrators share invitation links privately and the server operator can issue a private account-recovery link. Mill does not send task notifications by email.

External clients can use personal or team API keys with explicit grants for REST and MCP. Personal keys remain bounded by the owner's current active role; team keys use a stored team policy. MCP also uses OAuth with the approving person's current role, approved scopes, and optional board restrictions. Mill does not run external clients or launch jobs when a task is assigned.

Start with [installation](/installation) and [your first board](/getting-started). Read [everyday work](/workflows) for the task model, [accounts and team access](/authentication) for invitations and passkeys, [REST and MCP connections](/clients) for external clients, and [backup and recovery](/backup) before storing important work.

Mill is licensed under Apache 2.0. See [release notes](/release-notes) for the proposed version and [installation](/installation) for the available installation methods.

## In the app

### Boards

<Tabs>
  <Tab title="Desktop">
    <Screenshot light="/assets/screenshots/release-v1/boards-light.png" dark="/assets/screenshots/release-v1/boards-dark.png" alt="Boards in Mill with sample data." width={2560} height={1800} />
  </Tab>

  <Tab title="Mobile">
    <Screenshot light="/assets/screenshots/release-v1/boards-mobile-light.png" dark="/assets/screenshots/release-v1/boards-mobile-dark.png" alt="Boards in Mill with sample data." width={780} height={1688} portrait />
  </Tab>
</Tabs>

### Task list

<Tabs>
  <Tab title="Desktop">
    <Screenshot light="/assets/screenshots/release-v1/board-light.png" dark="/assets/screenshots/release-v1/board-dark.png" alt="Task list in Mill with sample data." width={5120} height={3600} />
  </Tab>

  <Tab title="Mobile">
    <Screenshot light="/assets/screenshots/release-v1/board-mobile-light.png" dark="/assets/screenshots/release-v1/board-mobile-dark.png" alt="Task list in Mill with sample data." width={1560} height={3376} portrait />
  </Tab>
</Tabs>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.