Skip to main content

Local-first persona and context portability for cross-LLM collaboration

Project description

Sayane (紗綾音)

日本語版 README · Documentation · Roadmap

Sayane is a local-first toolkit for carrying persona, context, prompts, and audit trails across LLM workflows.

It keeps your canonical context on your own machine, compiles it for different LLM runtimes such as ChatGPT and Claude, and prevents captured changes from being merged blindly.

Your context should not disappear when you change models.

Why Sayane exists

AI work is increasingly spread across multiple tools: ChatGPT, Claude, Gemini, Cursor, local models, browser extensions, and knowledge bases. Each runtime has its own memory, prompt format, and assumptions. As a result, serious users often lose:

  • the context behind an answer,
  • the persona or working stance used to produce it,
  • the history of what changed,
  • the ability to review whether a captured insight should become part of the canonical profile.

Sayane separates your context from any single vendor memory or chat service. It treats persona and context as local, reviewable project assets.

What Sayane does

Need Sayane mechanism
Keep a canonical user profile locally Sayane Profile in ~/.sayane/
Generate prompts for different LLMs Profile → Prompt IR → target adapter
Avoid blind context merges capture → candidate → evaluate → approve/reject
Track accepted and rejected changes lineage records
Use local Markdown context context/, storage index, optional Obsidian/Git workflows
Connect tools and editors CLI, Local Bridge, MCP server, Chrome Extension

Current status

Community Edition in this repository is now v1.0.13 and supports the core local-first workflow.

Community Edition v1.0.13 is now published on PyPI.

Interface Status Primary use
CLI Available init / compile / candidate / storage
Local Bridge Available sayane serve + local HTTP API
MCP Server Available Cursor / Claude Desktop integration
Chrome Extension Frozen / deprecated legacy capture / context insert / candidate actions during migration
RDE/Candidate evaluation Available evaluate / approve / reject / lineage
Storage Available local Markdown / filesystem-first workflows, with Obsidian/Git kept as legacy compatibility paths

Try it in 5 minutes

Install the CLI first. See docs/install.md for detailed installation notes.

# PyPI (macOS / Linux / Windows with Python 3.11+)
pip install "sayane==1.0.13"
# macOS / Linux install script
curl -fsSL https://raw.githubusercontent.com/zyx-corporation/sayane/main/scripts/install.sh | bash
# Windows PowerShell install script
irm https://raw.githubusercontent.com/zyx-corporation/sayane/main/scripts/install.ps1 | iex

Verify the core flow:

sayane --version
sayane init
sayane compile --target chatgpt --profile examples/profiles/minimal.yaml

This verifies:

  • local profile store initialization,
  • target-specific prompt compilation from one profile,
  • the basic flow: Profile → Prompt IR → Adapter output.

Notes:

  • The Chrome Extension remains available for existing users, but it is frozen / deprecated and no longer the primary entry point.
  • The recommended stable integration surfaces are the CLI, Local Bridge, and MCP Server.

Core workflow

Sayane Profile (local canonical context)
        ↓
Prompt IR (runtime-independent intermediate representation)
        ↓
Adapter (ChatGPT / Claude / Gemini / local targets)
        ↓
Target-specific prompt output

captured context → Candidate → evaluation → approve/reject → lineage

The LLM is not the owner of your persona. It is a runtime that receives a compiled prompt from your local profile.

Core principles

1. Separate persona from runtime

Your canonical persona and context belong to the local Sayane Profile, not to vendor memory.

2. Compile through Prompt IR

Do not copy one giant prompt string across runtimes. Compile one canonical profile into target-specific outputs.

3. Review meaning changes before merge

Captured context should become a candidate first. It should be evaluated, accepted, rejected, and recorded.

capture → candidate → evaluate (RDE/UIB-inspired review) → approve/reject → lineage

4. Prefer local-first portability

Sayane is designed so that serious AI work can remain inspectable, portable, and independent from any single hosted LLM memory.

Documentation

Start here:

Development

git clone https://github.com/zyx-corporation/sayane.git
cd sayane
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
pytest -q

Development references:

Positioning

Sayane is not a prompt snippet manager.

It is a small infrastructure layer for people who want AI collaboration to be:

  • portable across models,
  • local-first by default,
  • reviewable before merge,
  • inspectable after change,
  • grounded in explicit persona, context, and lineage.

License

Apache License 2.0
SPDX-License-Identifier: Apache-2.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sayane-1.0.14.tar.gz (2.2 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sayane-1.0.14-py3-none-any.whl (358.8 kB view details)

Uploaded Python 3

File details

Details for the file sayane-1.0.14.tar.gz.

File metadata

  • Download URL: sayane-1.0.14.tar.gz
  • Upload date:
  • Size: 2.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sayane-1.0.14.tar.gz
Algorithm Hash digest
SHA256 c748da2e605a42c4e68ee7b164be41f8e99d242165fb2520d9316d20e4211e10
MD5 7d0d9be692755d7ab0453ea7e9b0b95f
BLAKE2b-256 439644a4326e28bad9405b795e17f1ae8ce1a4d81006663a804b764721c488bc

See more details on using hashes here.

Provenance

The following attestation bundles were made for sayane-1.0.14.tar.gz:

Publisher: publish-pypi.yml on zyx-corporation/sayane

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sayane-1.0.14-py3-none-any.whl.

File metadata

  • Download URL: sayane-1.0.14-py3-none-any.whl
  • Upload date:
  • Size: 358.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sayane-1.0.14-py3-none-any.whl
Algorithm Hash digest
SHA256 c5b3a96812f07aa47f862d0ed479a765b2c3066e99d1988b27c9853fed5635fe
MD5 d7f7be8a9c801bf68c4a09f5a66905cb
BLAKE2b-256 007558fd6932374cccc2cbf6669a3ed826bb0cf91ebef356033bfba3603db9ed

See more details on using hashes here.

Provenance

The following attestation bundles were made for sayane-1.0.14-py3-none-any.whl:

Publisher: publish-pypi.yml on zyx-corporation/sayane

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page