lifeops
v0.3.7
Published
Primary public Life Ops CLI for agenda composition, project-share drafting, and starter scaffolds.
Maintainers
Readme
lifeops
lifeops is the main public npm package for Life Ops.
Maintained by Fractal Research Group (frg.earth).
It is designed for teams and codebases that want a lightweight, installable command line for:
- scaffolding Life Ops starter files
- keeping persistent local tasks and weekly routines visible until they are actually completed
- composing a week agenda from structured JSON feeds
- drafting structured project-share emails and follow-up queues
- controlling the local managed CMAIL inbox service
This package is the main install path for Life Ops.
The sibling @lifeops/core package remains available as a secondary SDK layer for builders who want the reusable primitives directly.
If you are trying Life Ops for the first time, start here.
Self-hosted CMAIL
CMAIL is a self-hosted mail surface for Life Ops.
That means:
- you bring your own domain
- you bring your own Cloudflare setup
- you bring your own Resend setup
- you bring your own local secrets and API keys
Life Ops does not ship any FRG credentials, tokens, domains, or provider billing. Each user/operator sets up and pays for their own mail infrastructure.
lifeops cmail install bootstraps the bundled Python backend into a local user-owned environment and installs the managed mailbox service for that user.
Install
npm install -g lifeopsFor local development from this repo:
npm install
npm install -g ./packages/lifeops-cliCommands
lifeops init
Create starter files in the current directory:
lifeops initOr scaffold another folder:
lifeops init ./my-lifeopsThis writes:
lifeops.items.jsonlifeops.project.jsonlifeops.recipients.json
lifeops item
Create and manage persistent local commitments:
lifeops item add \
--list professional \
--title "Write and publish weekly FRG blog post" \
--notes "Do not mark done until the post is published and verified live."
lifeops item list --list professional
lifeops item done 1Items live in the local Life Ops store under LIFE_OPS_HOME or ~/.lifeops.
Open items stay visible until they are explicitly completed.
lifeops routine
Create recurring local routines:
lifeops routine add \
--name "Weekly FRG blog post" \
--cadence weekly \
--day Wednesday \
--time 09:00 \
--duration 60 \
--task-title "Write and publish weekly FRG blog post" \
--task-notes "Do not mark done until the post is published and verified live."
lifeops routine listRoutines are expanded into agenda output. When a routine has --task-title, LifeOps also materializes a durable task instance for each occurrence in the agenda window. If that week's task already exists, including as a completed item, LifeOps does not duplicate it.
Existing routines can be connected to a task template:
lifeops routine update 1 \
--task-title "Write and publish weekly FRG blog post" \
--task-notes "Do not mark done until the post is published and verified live."lifeops agenda
Render a week agenda from the persistent local Life Ops store:
lifeops agenda --days 7 --timezone America/Chicago
lifeops agenda --format jsonOr render from an explicit item feed:
lifeops agenda --input ./lifeops.items.json --days 7 --timezone America/Chicago
lifeops agenda --input ./lifeops.items.json --format jsonThe input can be either:
- a JSON array of Life Ops items
- an object with an
itemsarray
lifeops share
Create structured share drafts and follow-up items:
lifeops share \
--project ./lifeops.project.json \
--recipients ./lifeops.recipients.json \
--sender-name CodyTo write packet artifacts to disk:
lifeops share \
--project ./lifeops.project.json \
--recipients ./lifeops.recipients.json \
--output-dir ./outreach-packetThis writes:
packet.json- one
.txtdraft per recipient - one
.htmldraft per recipient
lifeops cmail
Control the local managed CMAIL service:
lifeops cmail install
lifeops cmail status
lifeops cmail restart
lifeops cmail open
lifeops cmail tailscaleThe package also installs a dedicated cmail shortcut:
cmail status
cmail restart
cmail open
cmail tailscaleFor iPhone or other private mobile access, install Tailscale on the computer running CMAIL and on the phone, sign into the same tailnet, then run:
cmail tailscale-status
cmail secure-doctorThis deployment's canonical private phone URL is:
https://cmail.tail649edd.ts.netCMAIL itself still stays bound to 127.0.0.1:4311. The shared Tailscale live-app-host routes cmail.tail649edd.ts.net:443 to that local listener, so mobile users should save the no-port canonical URL to the iPhone Home Screen and keep the Tailscale app connected. Do not expose CMAIL with public Tailscale Funnel.
CMAIL is independent from Clawdad. Updating or publishing Clawdad does not update CMAIL; NPM/package users need a separate LifeOps/CMAIL release.
Drafts can also be created from anywhere on the machine, including attachments:
cmail new-draft --to [email protected] --subject "A note" --body-file ./note.txt --attach ./paper.pdf --format json
cmail draft-save --id 74222 --attach ./figure.png --format jsonThis is intended for a self-hosted local mailbox running on your machine. The install flow bootstraps the bundled backend into your local Life Ops home before starting the service.
Support
Everything here is released for public use. If LifeOps saved you time or you want to keep the work moving, you can support public FRG releases.
