Sally Docs
Implementation-backed docs for installing, operating, and integrating Sally.
Installer
Overview
Sally is installed and updated through create-sally. This is the official operator entrypoint for fresh installs, guided updates, and deployment checks.
npx --yes create-sally@latest npx --yes create-sally@latest update npx --yes create-sally@latest doctor --dir /opt/sally-instance Install Sally
The normal install path for a fresh Ubuntu or Debian box is the interactive installer.
Node.js must be installed first, because create-sally runs through npx.
ssh root@your-server-ip apt update && apt install -y curl ca-certificates gnupg && \
mkdir -p /etc/apt/keyrings && \
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg && \
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" > /etc/apt/sources.list.d/nodesource.list && \
apt update && apt install -y nodejs node -v
npm -v
npx -v npx --yes create-sally@latest Recommended default: managed-simple.
Install Modes
managed-simple is the default path. It sets up Docker, Postgres, HTTPS via Caddy, and the Sally web + API containers.
existing-infra is for setups that already have reverse proxy, TLS, or other infrastructure decisions in place.
npx --yes create-sally@latest install \
--mode managed-simple \
--dir /opt/sally-instance \
--domain sally.example.com \
--workspace Operations \
--superadmin-email owner@example.com \
--superadmin-name "Sally Admin" \
--acme-email owner@example.com \
--email-setup later \
--version latest \
--yes Update Sally
The updater is designed for deployments originally created by create-sally.
npx --yes create-sally@latest update npx --yes create-sally@latest update --dir /opt/sally-instance --version latest --yes It updates managed image references, pulls fresh images, applies schema changes, reruns bootstrap safely, restarts services, and verifies health.
Doctor & Checks
doctor is the quick health/config check path for installer-managed deployments.
npx --yes create-sally@latest doctor --dir /opt/sally-instance It checks Docker, Docker Compose, install structure, detected mode/version, and lightweight health checks.
Recovery
The core recovery model is database dump + uploads backup + restore verification.
sudo /opt/sally/ops/backup.sh curl -sS https://your-sally-domain.com/api/health Operators should test restore procedures before they need them in production.
API
Overview
Sally has a real HTTP API behind the web app. It is the implementation-backed source of truth for workspaces, projects, tasks, clients, notifications, timesheets, API keys, and hosted MCP keys.
Expected API variables
YOUR_SALLY_DOMAIN— your deployed Sally base domain, for exampleapp.example.comYOUR_API_KEY— a personal Sally API key with theatpm_...prefixYOUR_WORKSPACE_SLUG— workspace slug when the caller belongs to multiple workspaces
Typical base paths
https://YOUR_SALLY_DOMAIN/apifor deployed environmentshttp://127.0.0.1:4000for local API development
Auth & Workspace Selection
Sally supports session auth, personal API keys, hosted MCP keys, and an optional global API token for bootstrap/testing scenarios.
Available auth inputs
Authorization: Bearer <sessionToken>Authorization: Bearer <apiKey>Authorization: Bearer <mcpKey>for hosted MCPX-Session-TokenandX-Api-Keyas compatibility headers where supported
Workspace selectors
X-Workspace-IdX-Workspace-Slug- query params like
workspaceId,workspaceSlug,workspace_id, andworkspace_slug
For most non-auth routes, workspace selection should be explicit through X-Workspace-Id or X-Workspace-Slug.
Projects & Tasks
Projects and tasks are the operational core of Sally.
Expected project/task fields
projectId— required for task creationtitle— required for task creationstatusId— preferred when exact status targeting mattersstatus— supported by name when exact id is not usedlabels,todos,dueDate,priority,description— optional task fields
Available behavior
- project creation auto-creates default statuses
- task assignment can create assignment notifications
- comments can create mention notifications
- inline task-description images are supported
Timesheets & Reporting
Sally supports project and task timesheets plus workspace-wide reporting, with permission-aware visibility and edit rules.
Expected report/query variables
fromandtodates- optional
projectId,clientId,taskId,userId - optional
showValidated=true
Available write fields
minutesdatedescriptionbillablevalidatedwhen the caller has sufficient permission
Tutorials
Use the API for practical end-to-end flows like listing projects, creating tasks, inviting members, creating hosted MCP keys, and generating reports.
Good integration habits
- treat workspace selection as explicit when the user belongs to multiple workspaces
- prefer ids over names once discovered
- fetch statuses first if exact status writes matter
- revoke temporary test keys after experiments
Architecture
Sally is a TypeScript-first system with a web app for humans, an HTTP API for integrations, and MCP interfaces for agent tooling.
The monorepo includes apps/web, apps/api, apps/create-sally, and apps/mcp.
MCP
Overview
Sally supports two MCP patterns: hosted MCP at /mcp and local stdio MCP via sally-mcp. Hosted MCP is the primary path.
Hosted MCP Quickstart
curl -X POST https://your-sally-domain.com/mcp \
-H 'Authorization: Bearer sallymcp_...' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
--data @initialize.json Normal flow: create hosted MCP key, point client at /mcp, authenticate, initialize, list tools, call tools.
Local stdio MCP
sally-mcp is the advanced or legacy local wrapper path.
SALLY_URL=https://your-sally-domain.com \
SALLY_USER_API_KEY=atpm_... \
sally-mcp Concepts
Sally is API-first, designed for humans + agents, low-noise UI, and a self-hostable operational core rather than collaboration theater.
End-User Usage
Overview
Sally is a project management system for teams that want a clean operational surface instead of a bloated collaboration suite.
Workspaces & Projects
Workspaces are the top-level collaboration boundary. Projects are the main execution container inside them.
Tasks & Timesheets
Tasks are the unit of execution. Timesheets record the work done against projects and tasks.
Keys & Notifications
Sally supports personal API keys, hosted MCP keys, task assignment notifications, comment mention notifications, and per-event notification preferences.
Licensing
Sally is source-available under BSL 1.1 with an Additional Use Grant. Self-use is allowed; SaaS, white-labeling, and third-party hosting require separate rights.