LOCAL-FIRST · PRIVACY-FIRST

864zeros — Building Blocks

44 reusable capabilities — shown by contract (what goes in, what comes out). The implementation is ours; the interface is open.

44 capabilities6 Capture7 Analysis6 Export9 Infrastructure4 UI Pattern4 Document Processing3 Data Sync3 Communications2 Forms Automation

The building blocks behind our products (44)

Capture
S

agent-dom-scraper

in → DOM document context (active tab via content script)
out ← { url, title, lang, description, keywords, links[], text, html, host, canonicalUrl, slug, siteName, section, author, publisher, datePublished, dateModified, contentType }
Capture
XS

agent-page-metadata

in → Document
out ← { lang, metaDescription, og: {title, description, image, siteName, type}, twitter: {title, description, image} }
Capture
M

agent-marquee-capture

in → User mouse drag on viewport
out ← { imageDataUrl: base64 png, bounds: {x, y, width, height} }
Capture
S

agent-pdf-generator

in → { tabId, preset: 'standard'|'fullPage'|'compact'|'landscape'|custom }
out ← { pdfDataUrl: base64, filename, sizeBytes }
Capture
XS

agent-screenshot-visible

in → { tabId, format: 'png'|'jpeg', quality }
out ← { imageDataUrl: base64 }
Analysis
S

agent-anonymizer-pii

in → { text: string }
out ← { redactedText: string, redactions: [{type, original, replacement, index}] }
Analysis
XS

agent-ai-summarize

in → { text: string, maxLength: int }
out ← { summary: string, model: string }
Analysis
XS

agent-ai-autotag

in → { text: string, existingTags: string[] }
out ← { tags: string[], model: string }
Analysis
XS

agent-ai-vision

in → { imageBase64: string, prompt: string }
out ← { description: string, model: string }
Analysis
XS

agent-ai-chat

in → { messages: [{role, content}], context: string }
out ← { response: string, model: string }
Analysis
S

agent-local-ai-keywords

in → { text: string, existingTags: string[] }
out ← { suggestedTags: string[], confidence: number }
Export
M

agent-drawio-converter

in → { structured_diagram_json (matches DRAWIO_EXTRACTION_SCHEMA — diagram_type, title, layout_direction, grid_dimensions, legend, containers, nodes, edges) }
out ← { drawioXml: string }
Export
M

agent-drive-sync

in → { data: any, filename: string, appSlug: string }
out ← { success: bool, fileId: string, syncedAt: ISO8601 }
Export
S

agent-local-backup

in → exportLocal: ()=>void / importLocal: File
out ← exportLocal: triggers .json download with shape {app, version, exportedAt, stores: {...}} / importLocal: {success, recordsImported, errors}
Infrastructure
S

agent-indexeddb-store

in → Standard CRUD: get(store, key), put(store, value), delete(store, key), getAll(store), exportAll(), importAll(data)
out ← Promise of value | array | success status
Infrastructure
XS

agent-chrome-storage-store

in → {key, value} or {key}
out ← Promise of value or success
Infrastructure
S

agent-feature-gate-tiers

in → { feature: string }
out ← { allowed: bool, requiredTier: string|null, currentTier: string }
Infrastructure
S

agent-payment-extpay

in → { planId: string }
out ← { user: ExtPayUser, paid: bool, plan: object, expiresAt: ISO8601 }
Infrastructure
S

agent-credit-ledger

in → { feature: string, costCredits: int }
out ← { ok: bool, remaining: int, history: [{type, feature, amount, timestamp}] }
Export
Sv1.0.0

agent-markdown-converter

in → Single: {content, title, source_url, timestamp, tags, note, extra?} | Batch: array of items + options
out ← Single: {filename, markdown}. Batch: {files: [{filename, markdown}, ...]} (one-file-per-item with collision-protection, OR combined into single file when options.combined=true)
Infrastructure
XSRULE-002v1.0.0

headless-download-uri

in → { content: string, filename: string, mimeType?: string, conflictAction?: 'uniquify'|'overwrite'|'prompt', saveAs?: boolean }
out ← Promise<number> — Chrome downloadId; rejects on download failure
UI Pattern
SRULE-003v1.0.0

tristate-checkbox-list

in → Constructor: { masterCheckbox: HTMLInputElement, itemCheckboxSelector: string, getItemId: (cb)=>any, selectedClassTarget?, selectedClass?, masterLabelEl?, masterLabelTemplate?, onChange? }
out ← TristateSelection instance — { refresh(), getSelected(), getCount(), clear(), destroy() }
UI Pattern
SRULE-005v1.1.0

two-tap-arm-pattern

in → { button: HTMLButtonElement, onConfirm: ()=>any, hintEl?, defaultLabel?, armedLabel?, defaultHint?, armedHint?, armClass?, timeoutMs?, disableDuringConfirm? }
out ← controller — { cancelArm(), isArmed(), destroy() }
UI Pattern
MRULE-004v1.0.0

accordion-record-v1

in → Constructor: { container: HTMLElement, recordSelector?, headerSelector?, chevronSelector?, bodyWrapperSelector?, expandedClass?, exclusive?: boolean (default true), shiftMultiExpand?: boolean (default true), onChange?: (Set) => void }
out ← AccordionController instance: { toggle(id, shiftKey?), expand(id), collapse(id), collapseAll(), isExpanded(id), getExpandedIds(), refresh(), destroy() }
Infrastructure
XSRULE-014

addon-lockservice-mutex

in → lockType: 'document'|'script'|'user', timeoutMs: number, fn: Function
out ← Result of fn() execution; throws error if lock acquisition fails within timeout
UI Pattern
XSRULE-013

addon-static-suite-catalog

in → SUITE_CATALOG array: [{slug, name, tag, desc, url}]
out ← HTML catalog fragment rendered into sidebar DOM with zero external HTTP requests
Document Processing
SRULE-013

addon-token-replacer

in → { template: string|Document|Slide, tokens: Record<string, string|number> }
out ← Mutated text or document structure with {{Token}} placeholders replaced by formatted values
Data Sync
MRULE-014

addon-sheet-upsert-engine

in → { targetSheet: Sheet, sourceRows: any[][], sourceHeaders: string[], targetHeaders: string[], primaryKeyColumn: string, syncMode: 'APPEND_NEW'|'UPSERT_BY_KEY'|'MIRROR_OVERWRITE' }
out ← { rowsProcessed: number, rowsAppended: number, rowsUpdated: number, durationMs: number }
Document Processing
SRULE-015

addon-doc-watermarker

in → { doc: Document, text: string, options: { scope: 'HEADER'|'FOOTER'|'BOTH', position: 'CENTER'|'RIGHT'|'LEFT', style: { color, size, italic, bold } } }
out ← { success: boolean, elementsStamped: number, previousWatermarksRemoved: number }
Data Sync
SRULE-016

addon-bottom-up-archiver

in → { sourceSheet: Sheet, targetSheet: Sheet, filterCol: number, condition: 'equals'|'contains'|'olderThan'|'empty', conditionValue: any }
out ← { rowsArchived: number, rowsDeleted: number, executionTimeMs: number }
Infrastructure
XSRULE-017

addon-time-trigger-manager

in → { handlerFunction: string, frequency: 'HOURLY'|'EVERY_6_HOURS'|'DAILY'|'AT_DATE', targetDate?: Date }
out ← { success: boolean, triggerId: string, frequency: string }
Communications
SRULE-018

addon-quota-aware-mailer

in → { recipients: Array<{to: string, subject: string, htmlBody: string, rowIndex: number}>, statusSheet: Sheet, statusCol: number }
out ← { sentCount: number, skippedQuota: number, errors: string[] }
Forms Automation
SRULE-019

addon-form-choice-eliminator

in → { form: Form, questionId: number, limits: Record<string, number>, currentHeadcounts: Record<string, number> }
out ← { eliminatedChoices: string[], remainingChoices: string[] }
Document Processing
MRULE-020

addon-slide-master-duplicator

in → { presentation: Presentation, templateSlideIndex: number, dataRows: Record<string, any>[], deleteTemplate?: boolean }
out ← { slidesCreated: number, totalSlides: number }
Export
XSRULE-021

addon-drive-pdf-compiler

in → { docFile: Document, destinationFolder: Folder, pdfFilename: string }
out ← { pdfId: string, pdfUrl: string, sizeBytes: number }
Infrastructure
XSRULE-022

addon-doc-properties-store

in → { key: string, value: any, options?: { maxLogEntries?: number } }
out ← { success: boolean, storedValue: any }
Communications
XSRULE-023

addon-tokenized-action-router

in → { entityId: string, action: string, secret: string, webAppUrl?: string }
out ← { token: string, actionUrl: string, isValid?: boolean }
Forms Automation
XSRULE-024

addon-conditional-rule-evaluator

in → { rules: Array<{field: string, operator: string, value: string}>, dataRecord: Record<string, any>, mode?: 'AND'|'OR' }
out ← boolean
Analysis
SRULE-025

addon-drive-duplicate-scanner

in → { folder: Folder, maxDepth?: number }
out ← { clusters: Array<{signature: string, count: number, totalWastedBytes: number, files: Array<any>}>, orphanCount: number }
Data Sync
SRULE-026

addon-calendar-sync-engine

in → { sheet: Sheet, calendar: Calendar, mapping: { titleCol: number, startCol: number, endCol?: number, descCol?: number, locCol?: number, idCol: number } }
out ← { created: number, updated: number, skipped: number }
Capture
SRULE-027

addon-anonymous-file-portal

in → { folderId: string, base64Data: string, fileName: string, mimeType: string, uploaderName?: string, uploaderEmail?: string, note?: string }
out ← { fileId: string, fileName: string, sizeBytes: number, url: string }
Export
SRULE-028

addon-barcode-qr-generator

in → { rawData: string, codeType: 'qr'|'barcode', folder?: Folder, fileName?: string }
out ← { svgString?: string, fileId?: string, previewFormula?: string }
Communications
SRULE-029

addon-webhook-dispatcher

in → { endpointUrl: string, rowData: Record<string, any>, preset?: 'generic'|'slack'|'discord'|'raw', customHeaders?: Record<string, string> }
out ← { statusCode: number, success: boolean, body: string }
Document Processing
SRULE-030

addon-signature-canvas-stamper

in → { doc: Document, signatureDataUrl: string, signerName: string, signerTitle?: string, placement?: 'token'|'cursor'|'footer' }
out ← { placed: boolean, dateStamp: string }

864zeros LLC · radical transparency · verifiable proof, calibrated detail · 2026-09-09 · the diagrams are generated from the same registries our products are built from (code wins).