Getting Started: Outpost for Engineers
Outpost is your personal operations center. It syncs email and calendar, builds a knowledge graph, drafts responses, and prepares meeting briefings. It runs all of these as scheduled AI tasks in the background.
Prerequisites
-
macOS — required. Outpost syncs from Apple Mail
and Apple Calendar. A transitive dependency
(
@forwardimpact/libmacos) declares"os": ["darwin"].npm installfails on Linux and Windows withEBADPLATFORM. A cross-platform degraded install (without Apple sync) is on the roadmap. Until it ships, install on a Mac. - Mail and calendar accounts — Outpost reads through Mail.app and Calendar.app. Outpost walks any account synced inside those apps. That includes a Gmail account synced over IMAP in Mail.app and a Google Calendar synced over CalDAV in Calendar.app. Outpost does not pick up mail or calendar that lives only outside those apps (the Gmail web app, a separate Outlook client).
- Node.js 22+
- npm
-
Claude Code installed with Homebrew (
brew install claude) — Outpost spawnsclaudeas a subprocess. The Homebrew install supportsNODE_EXTRA_CA_CERTSfor enterprise CA certificates
If your network requires a custom CA bundle, add an
env block to
~/.fit/outpost/scheduler.json:
{
"env": {
"NODE_EXTRA_CA_CERTS": "~/.config/ssl/ca-bundle.pem"
}
}
Install
On macOS:
npm install @forwardimpact/outpost
On Linux or Windows this install fails with
EBADPLATFORM and cites
@forwardimpact/libmacos. That dependency is a hard
requirement today. No part of the package degrades cleanly off Apple
platforms yet. Switch to a Mac to continue.
Initialize a knowledge base
npx fit-outpost init
The command provisions the default Team knowledge base
at ~/.local/share/fit/outpost/Team. Pass a name (for
example, npx fit-outpost init personal) to provision a
second one beside it.
The knowledge base root is an Obsidian vault. After init it holds
five tier directories, the personal
Briefings/ directory, and the bundled files:
~/.local/share/fit/outpost/Team/
├── 0-Draft/ # Tier 0: you only, never shared
├── 1-Management/ # Tier 1: senior managers
├── 2-Confidential/ # Tier 2: managers with hiring duties
├── 3-Team/ # Tier 3: the whole team
├── 4-Public/ # Tier 4: anyone
├── Briefings/ # Personal: daily briefings
├── registry.yaml # Personal: metadata vocabularies
├── CLAUDE.md # Personal: agent instructions
└── .claude/ # Personal: agents, skills, settings
The numbered tiers hold the knowledge graph. Each tier is one unit
of sharing. A lower tier number means a narrower audience. Every
other root entry is personal and never shared. Entity folders such
as 3-Team/People/ appear when an agent first writes to
them.
Validate the knowledge base
npx fit-outpost validate ~/.local/share/fit/outpost/Team
The command checks tier ranks, link direction and format, and note frontmatter. A fresh knowledge base passes with no findings.
Check status
npx fit-outpost status
Run the scheduler
npx fit-outpost daemon
Outpost runs as a macOS status menu app. Scheduled AI tasks handle the background work. The CLI scheduler works on any platform.
macOS Privacy & Security
Outpost needs access to the live Mail and Calendar stores it reads.
Grant every permission to a single app,
fit-outpost.app. That grant covers the whole
scheduler and the agents it runs. You never grant access to
node, claude, or any other helper process.
Outpost runs two kinds of agent, and they need different access:
-
fullagents sync the live Mail and Calendar stores or send mail. They read those stores and drive Mail under the onefit-outpost.appgrant. -
restrictedagents only process already-synced content and your knowledge base, which lives outside every protected folder (~/.local/share/fit/outpost/). They need no macOS grant. Even a compromisedrestrictedagent cannot reach protected files.
When macOS prompts for the Mail and Calendar stores, grant
Full Disk Access to fit-outpost.app.
If a draft-side skill sends mail, macOS also prompts once under
Automation to let
fit-outpost.app control Mail. Click
Allow. Your knowledge base needs no grant.