hosystem Engagements

Sharibako — Project Seed

1: Seed. Drafted 2026-06-30 from sharibako-pre-.md plus a seed-conversation pass. Revised 2026-07-01: injection non-goal loosened (see kamae-2.1); PassStore, PX Secrets, 1Password op run, and dotenvx added to landscape; threat model expanded to include AI agents as workspace actors; "made by a user, for users" framing and robustness bar added to Project Nature and Intent. This remains a build- document — the tool's , not its go-to-market. The pre-seed remains as the working dump it was; this is the the project will be evaluated against from here forward.

The injection loosening is specified in detail in kamae-2.1-sharibako-injection-decision.md, which is authoritative for that decision.


The Problem

My secrets scatter because no storage I have is shaped like how I actually work.

API keys, infrastructure credentials, and project secrets currently live across iCloud Keychain, scattered .env files, shell config, Vaultwarden, hardcoded scripts in ~/bin/, and — worst — pasted into Claude conversations because retrieval from anywhere else is too slow at the moment I need them. Every storage system is shaped wrong: my password manager is built for "logins to websites," but I work in repos and on machines. The shape mismatch produces the scatter.

The friction that produces, day to day:

Underneath all of that is the real problem: hygiene. The friction of doing it right is higher than the friction of doing it wrong. Reusing one OpenAI key across eight projects is easier than generating eight scoped keys. Pasting into Claude is easier than retrieving from Keychain. Leaving a leaked key un-rotated is easier than rotating it. Every tool I have makes the wrong path the easier path.


The Landscape

Engaged and evaluated. Comp table preserved in sharibako-pre-seed.md. Summarized here:

The gap, named directly: no tool combines (a) native local app on disk, (b) git-backed source of truth (encrypted files, not opaque DB), (c) age-encrypted, (d) shaped to projects and machines as primary, (e) opinionated about per-project hygiene, (f) single-user scale, (g) both materialize-to-file and inject-into-process as first-class output verbs. PassStore is closest but misses (b), (c), and (g); PX Secrets attempts (b) and (c) but is immature and misses (g). Sharibako sits in the empty quadrant.


The Vision

The Soul

A small, trustworthy workshop for the keys that power our tools — not a terminal ritual, not a corporate vault, but a calm local place where secrets can be kept, understood, backed up, used, and handled cleanly. Opinionated about hygiene: the path of least friction is the path of good practice. Isolating keys per project is the easy default; sharing across projects is possible but visible and one click away from feeling intentional.

The Body

A native Mac app (Apple Silicon, SwiftUI) with a first-class CLI, that wraps sops to store project secrets as age-encrypted files in a Git-backed folder on disk. Each project owns its own secrets. Two secrets can be explicitly linked across projects when a credential is genuinely shared (rotate one, both move). The vault is a local directory the user controls. A remote git host is supported for backup and multi-machine sync but not required.


Audience

Three personas, all real, the tool serves the union of their needs without bending to satisfy any one of them more than the others:

Not: enterprise teams, anyone needing RBAC / SSO / per-user audit compliance, anyone managing thousands of secrets.

A note on sharing across humans: the architecture supports it for free — share the git remote, share the age key, both humans have the same vault. A married couple sharing homelab credentials, two co-founders sharing API keys, a parent helping a kid manage their OpenAI key — all work without sharibako knowing anything about it. What sharibako does not model is multiple users as distinct identities: no per-user permissions, no audit log of who edited what, no "user accounts." The vault has one identity (the age key). Multiple humans can possess that identity if they choose to.


Identity

Sharibako (舎利箱) — reliquary box. A small container for sacred Buddhist relics, especially śarīra: the remaining fragments associated with an awakened teacher.

Why it fits: the project is a reliquary box for digital secrets. API keys, tokens, certificates, and environment variables are tiny fragments, but they carry real power — access, authority, cost, risk, and continuity. Sharibako fits because the tool is not a giant enterprise vault and not a bare command-line ritual. It is a right-sized, local, careful container for the small charged things that make your systems come alive.

A second reading lands just as cleanly. shari (シャリ) is also the prepared sushi rice — the container the chef reaches into for every single dish, the underlying of all preparation. Secrets play exactly that role in software: nothing ships without them, every project reaches into them, the box sits within arm's reach of the workstation. Both readings hold and both are intended. Reliquary names the preciousness of what's inside. Shari names the constancy of the reaching.

Fits the existing Sageframe sushi-house naming convention alongside koan, jodo, chumon, tenzo, kura, kanyo.


Project Nature and Intent


Architecture Direction

First-pass thinking. Opinions, not commitments. System Design will turn these into decided architecture.

Stack:

Storage shape:

Materialization:

Distribution (mirrors M4Bookmaker pattern, ported native to Swift):

Marked provisional:


Constraints


Scope Boundaries

This is:

This is NOT:

MVP line:

A working Mac app that can:

  1. Create a vault (local git repo) at a chosen path
  2. Generate an age key with a backup nudge flow strong enough that a vibe coder doesn't lose it
  3. Add / edit / delete projects and their secrets through the GUI
  4. Link two project secrets (the rotation-propagation feature — this is parti-defining and ships in MVP)
  5. Materialize a project's secrets to a .env file at a configured path
  6. sharibako run -- <cmd> — spawn a command with the current scope's secrets in its environment, values never written to disk (added 2026-07-01; ships in MVP via ho-04.5)
  7. sharibako sync (git pull + push when a remote is configured)
  8. CLI parity for adding / showing / materializing / running / syncing — no GUI required for the developer path

Deferred to post-MVP hos:


Success Criteria

Observable, testable by someone other than me.

  1. The transcript leak stops. I no longer paste API keys into Claude conversations because retrieval from sharibako is faster than typing the key by .
  2. The scatter is consolidated. Within 30 days of v1 personal use, every API key currently in iCloud Keychain, Vaultwarden, .env files, shell config, or scattered scripts is either in sharibako or deliberately not — moved to where it actually belongs (a website login goes to Apple Passwords; it doesn't get put in sharibako).
  3. A vibe coder can succeed unassisted. A non-expert friend who codes with AI can install sharibako, set up a vault, add an OpenAI key, materialize it to a project .env, and use it in their app within 15 minutes, with no help and no terminal use beyond what the GUI prompts.
  4. Rotation is one action. Rotating a linked secret takes one edit in the GUI or one CLI command, and propagates to every project that references it — verified by checking that materialized .env files in all referencing projects show the new value.

Where I'm Starting From

Known:

New:


What I Want to Learn


Open Questions

Deferred to System Design or first hos. Not blocking the seed.


Next: System Design (Kamae 2)

The seed is the parti. System Design commits the architecture: storage schema fully specified, sops invocation patterns chosen, CLI command surface drafted, GUI screen flow mapped, MVP hos identified, signing pipeline planned. This seed feeds it.

Rendered from the corpus, verbatim · source on GitHub →

ingested: sharibako @ a97b22af9b61 · ho-system @ 79e96b801a13 · the glossary · the colophon