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 v1.0.3 is available on PyPI and supports the core local-first workflow.

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 Available capture / context insert / candidate actions
RDE/Candidate evaluation Available evaluate / approve / reject / lineage
Storage Available Markdown / Obsidian / Git-oriented workflows

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.3'
# 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.

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.4.tar.gz (1.7 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.4-py3-none-any.whl (160.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: sayane-1.0.4.tar.gz
  • Upload date:
  • Size: 1.7 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.4.tar.gz
Algorithm Hash digest
SHA256 874aca32982f3bcdd0fc61aa924a14177d1887455540b33fb98d590087b3d35b
MD5 7b7e4fbd9e087597f3eb5ac27f2fd852
BLAKE2b-256 09793846d79d7247483fc1a7e2351445e405bed6caa63856fae580ece3db934a

See more details on using hashes here.

Provenance

The following attestation bundles were made for sayane-1.0.4.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.4-py3-none-any.whl.

File metadata

  • Download URL: sayane-1.0.4-py3-none-any.whl
  • Upload date:
  • Size: 160.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.4-py3-none-any.whl
Algorithm Hash digest
SHA256 dcc141671c5e5f315d898a4ce45294ef2723be1b68142877ae35a9603319da60
MD5 1a0b00e8bc5f6c2942ad82c57a5b4123
BLAKE2b-256 653697134b32c9576895d65b8bf37f2c4e6d65c39fdd9062e92900b00285daec

See more details on using hashes here.

Provenance

The following attestation bundles were made for sayane-1.0.4-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