membrane-cli 0.2.0

Schema-optional, file-based project memory system
membrane-cli-0.2.0 is not a library.

Membrane is a schema-optional, file-based project memory system.

It lets you name projects, attach arbitrary keys, and observe how language emerges across your work — without enforcing structure, schemas, or workflows.

Membrane is not a task manager, calendar, or ticketing system. It sits above those tools, acting as a lightweight semantic layer over your projects.


Why Membrane?

Most project tools fail in one of two ways:

  • They are too rigid (fixed fields, schemas, workflows)
  • Or too vague (notes with no structure at all)

Membrane takes a different approach:

  • Projects are files
  • Keys are language artifacts
  • Structure is allowed to emerge organically
  • Metadata exists, but stays out of the way

You decide what matters. Membrane just remembers it.


Core Concepts

  • Workspace-based
    A Membrane workspace lives in a .membrane/ directory.

  • Projects are YAML files
    Each project is a single, human-readable YAML file.

  • Schema-less by design
    Projects can contain any keys. No required fields.

  • Keys are first-class
    Keys can be added, renamed, deleted, and inspected across projects.

  • Metadata is explicit
    Reserved keys (prefixed with _) track creation and update times without polluting user-defined structure.


Installation

cargo install membrane-cli

This installs the me command.


Getting Started

Initialize a workspace

me init

Creates a .membrane/ directory in the current folder.


Create a project

me add my-project

Creates a new project file with basic metadata.


List projects

me show

Displays all projects in the current workspace.


Show a project

me show my-project

Displays all keys and values for the project. Metadata keys (prefixed with _) are visually dimmed.


Sort projects by a key

me show --sort status
me show --sort _updated --desc

When sorting is enabled, the selected key and its value are shown inline for each project (when present).


Set a key

me set my-project description "Initial prototype"

Values are parsed as YAML scalars when possible.


Set a multi-line value (interactive)

me set my-project notes

You’ll be prompted to paste or type content directly into the terminal. Finish with Ctrl+D (Linux/macOS) or Ctrl+Z + Enter (Windows).


Push a project from YAML

me push roadmap.yaml

Or interactively:

me push

Paste YAML content directly into the terminal to create a project.


Inspect keys across projects

me keys

Lists all keys and how frequently they appear.

me keys --similar

Highlights near-duplicate keys (e.g. created_at vs created-at).


Rename a key

me keys rename old_key new_key
me keys rename status phase --project my-project

Delete a project (safe)

me rm my-project

You’ll be asked to confirm by typing the project name.


Philosophy

Membrane is intentionally minimal.

It does not:

  • enforce schemas
  • impose workflows
  • sync to the cloud
  • track tasks or deadlines
  • automate decisions

Instead, it provides a durable, inspectable memory layer that you can reason about over time.


Versioning

Membrane follows semantic versioning.

  • 0.1.x establishes the conceptual and architectural core.
  • 0.2.x adds inspection, mutation, and sorting capabilities.
  • Future versions will extend views and filters without breaking existing project files.

License

MIT