- Rust 99.1%
- Shell 0.7%
|
All checks were successful
CI / Commit Conventions (push) Successful in 4s
CI / Format, Lint & Test (Manual) (push) Has been skipped
Container Check / Build & Smoke Test Container (push) Successful in 7m46s
Live Integration Smoke / Live Integration Smoke Gate (push) Successful in 4m44s
Release & Publish Container / Build & Push Container Image (push) Successful in 4m11s
|
||
|---|---|---|
| .forgejo/workflows | ||
| .githooks | ||
| scripts | ||
| skills/life | ||
| src | ||
| tests | ||
| .dockerignore | ||
| .envrc | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| Dockerfile | ||
| flake.lock | ||
| flake.nix | ||
| README.md | ||
Life Service
A centralized, single-user service and command-line interface for personal agenda management, task lifecycle tracking, deterministic schedule planning, and contextual review.
Overview
Life Service acts as the single coordinating hub between calendar storage, durable execution history, and advisory intelligence. It provides:
- Calendar & Agenda Management: Reads and synchronizes tasks and calendar events directly with CalDAV (Radicale), enforcing precise timezone math and strict half-open interval boundaries.
- Durable Audit & Consistency: Tracks execution history and operations locally using SQLite in Write-Ahead Logging (WAL) mode with two-phase commit semantics, append-only event logging, and full idempotency protection.
- Deterministic Schedule Planning: Calculates realistic time capacity, applies unscheduled buffer reserves, manages interruptions, and generates reviewable change proposals.
- Context & Evaluation Integrations: Integrates with semantic context storage (Hindsight) and structured judgment providers (TypeSafe/Jev) for intelligent candidate ranking and contextual rationale retrieval.
- Agent Interoperability: Exposes a standardized, machine-readable JSON CLI designed for automated agent harnesses (such as Oh My Pi and Hermes) with strict exit codes and explicit approval gates.
Architecture
The project is structured as a single Rust binary (life) that serves two operational roles:
life serve: An authenticated HTTP daemon managing background connections, local SQLite storage, and upstream integrations.life <command>: A thin, authenticated HTTPS client for command-line and automated agent interactions.
[Agent Harness / User]
|
(CLI / API)
v
[Life Service]
/ | \
v v v
CalDAV SQLite Semantic & Judgment Backends
Key Capabilities
- Strict Precondition Checking: All existing item modifications require current ETags and operation identifiers, preventing accidental overwrites.
- Preservation-Safe Calendar Handling: Modifies targeted properties while retaining vendor parameters, custom alarms, and existing recurrence overrides.
- Separation of Policy and Authority: Radicale remains the sole authority for active schedules, SQLite owns durability and operational history, and external models provide strictly advisory evaluations.
- Explicit Approval Gates: Planning and schedule replans generate immutable, digest-verified proposals that require user review before execution.
Live Integration Smoke Testing
Live integration smoke testing validates end-to-end compatibility against real Radicale, Hindsight, and Jev endpoints using isolated test resources.
Local Invocation
Run the smoke runner inside the pinned development shell:
nix develop --command bash scripts/live-smoke.sh
The script builds the debug binary, starts an ephemeral loopback daemon, verifies task lifecycle, semantic next evaluation, and outbox memory delivery/recall, cleans up the test calendar resource on Radicale, and removes temporary state.
OpenBao Credentials
Credentials are read from OpenBao KV v2 path secret/life-service/smoke:
RADICALE_USERNAME: Username for test CalDAV authentication.RADICALE_PASSWORD: Password for test CalDAV authentication.RADICALE_COLLECTION_URL: Dedicated CalDAV collection URL (must not be personal or tasks).HINDSIGHT_AUTHORIZATION: Authorization header value (e.g.Bearer <token>).HINDSIGHT_BANK_ID: Dedicated Hindsight memory bank identifier (must not beomp).JEV_BEARER_TOKEN: Bearer token for Jev evaluation on OpenRouter.
In CI, Forgejo injects a scoped token with read access to secret/data/life-service/smoke via repository secret OPENBAO_SMOKE_TOKEN.