This repo is the project orchestrator. Start here for rules, status, repo map, and agent orientation.
| Rules | RULES.md |
| Agent orientation | CLAUDE.md |
| Repo map | REPOS.md |
| Current status | STATUS.md |
| New contributors | ONBOARDING.md |
| Normative spec | workpads-standard/ |
A simple product in a complex era.
Workpads is a job-record system built around one durable unit: the single work document. Instead of forcing small teams into heavy software stacks, Workpads keeps the center of gravity on one thing that always matters in real work: a clear record of what happened, what should happen next, and why.
Most software for mobile businesses assumes:
- stable staffing,
- reliable desktop setup,
- always-on connectivity,
- willingness to manage accounts, seats, and subscriptions before work starts.
That assumption fails for many teams in trades, field service, and mobile operations.
Workpads starts from the opposite assumption:
- work starts in the field,
- teams are fluid,
- devices are constrained,
- connectivity is variable,
- simplicity is a hard requirement, not a nice-to-have.
The product thesis is straightforward:
- The individual job record is the root unit of business coordination.
- If job records are easy to create, share, and review, planning and performance improve.
- If records can travel as tiny links, coordination becomes lightweight and resilient.
Workpads uses a universal shape called PADS:
- Processes: the job and its structured fields.
- Actions: step-by-step items (short, actionable instructions).
- Details: concise notes and context.
- Story: long-form narrative and reflection.
PADS is intentionally small. It is broad enough to model real jobs and simple enough to run on low-end mobile devices.
- Plain HTML/CSS/JS compatibility.
- Minimal moving parts.
- Optional complexity, never mandatory complexity.
- No account required for baseline operation.
- Local-first behavior.
- Ephemeral-friendly storage policies.
- Workpads can be encoded to compact URLs.
- A recipient can open the link and reconstruct the record.
- Size is observable and optimized.
- Start with constraints (KaiOS-class devices, small screens).
- Keep behavior consistent across CLI, browser, and future app shells.
- One set of contracts.
- Many clients.
- Same data model everywhere.
Primary users:
- owner-operators in field businesses,
- dispatchers/team leads managing daily jobs,
- workers and collaborators who need access without full platform onboarding.
Core jobs-to-be-done:
- create a job record quickly,
- coordinate work with minimal friction,
- share context in one artifact,
- preserve learning from one job to improve the next.
A Workpads workflow should feel like:
- fast enough for in-field entry,
- clear enough for handoff,
- compact enough for lightweight sharing,
- structured enough for later reporting and improvement.
Workpads uses a microservice contract model with thin clients.
flowchart LR
cliClient[CLIClient] --> gatewaySvc[GatewayService]
webClient[LocalWebClient] --> gatewaySvc
kaiosClient[KaiOSClient] --> gatewaySvc
gatewaySvc --> templateSvc[TemplateRegistryService]
gatewaySvc --> recordSvc[RecordService]
gatewaySvc --> policySvc[StoragePolicyService]
gatewaySvc --> commentSvc[CommentService]
gatewaySvc --> codecSvc[CodecService]
gatewaySvc --> linkSvc[LinkService]
gateway-service: single orchestration entry point for clients.template-registry-service: validate, normalize, and resolve templates.record-service: create/edit/list/delete workpad records.storage-policy-service: business defaults + per-record storage override resolution.comment-service: social-mode comments and moderation actions.codec-service: encode/decode payloads.link-service: build/parse final links and centralize base URL control.
The CLI is not an experiment separate from the app; it is the first production client.
Design rule:
- if a workflow exists in browser, it must have a matching CLI contract,
- if a workflow exists in CLI, browser should consume the same request/response shape.
This keeps behavior stable while clients evolve.
Reference: architecture/microservices-practice.md
{
"templateId": "svc-basic",
"variant": "plain",
"process": {},
"actions": [],
"details": "",
"story": "",
"comments": []
}{
"v": 1,
"m": "legacy",
"t": "svc-basic",
"r": "plain",
"f": {},
"c": []
}Workpads supports dual authoring formats:
- simple KV (
templates/svc-basic.kv) - YAML (
templates/svc-basic.yaml)
Both normalize to runtime schema JSON:
templates/runtime/svc-basic.v1.json
This allows human-friendly editing while keeping runtime predictable and lightweight.
Storage is policy-driven and explicit:
- business-level default mode,
- optional per-record override,
- effective policy resolved at write/edit time.
Modes:
ephemeralstored
Reference: protocol/storage-policy.md
Workpad records can generate compact links for transport.
Current implementation focus:
- compact encoding and decode/import workflow,
- URL size visibility in list/dashboard metrics,
- no hard size enforcement yet (observability first).
Two main variants are supported conceptually:
plain: core PADS without social interaction.social: PADS + comments.
Social identity behavior is anonymous-first with optional display names.
This repo contains workpads.js, the original CLI implementation (v0.x). It uses a legacy encoding and is not codec-interoperable with the KaiOS app or web app. It is a useful reference for the service surface and record model.
npm install
node ./workpads.js helpFor full command examples, see cli.md and cheat-sheet.md. For the current CLI under active development, see workpads-cli/.
Claim: Core tier, BASICS v0.1.1
Evidence: conformance-tests/
Status: v0.1-draft — evidence artifacts present; compatibility-policy.md deferred to Q3 2026 after first build ships.
See STATUS.md for current conformance state.
Workpads is built on a simple conviction:
If the record is right, the rest of the system can be built cleanly around it.