Skip to content

Syntheos-Systems/FrameShift

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

51 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Frameshift

FrameShift (WIP Active development)

A runtime and marketplace for versioned, composable behavioral personas for AI coding agents.

Personas are not instruction lists. They are complete behavioral identities. The persona library ships freeform AGENTS.md markdown with a pack.toml manifest; the engine indexes the markdown, composes per-agent rendered output (Claude, Codex, Gemini, generic), and activates it via a single CLI call. A persona survives long sessions, surprising inputs, and the slow drift that turns careful operators into sloppy ones around turn 200.

What this repo contains

  • crates/ -- Rust workspace (24 crates): CLI, client engine, pack tooling, composition, conformance, catalog, memory, vault, object storage, HTTP server, MCP server, watch daemon, orchestrator (semantic-match persona selection), growth log
  • personas/ -- pack manifests for the persona library

How it works

Personas distribute as signed packs -- content-addressed tarballs with Ed25519 signatures and capability manifests. The CLI installs them into a central store outside your project tree. Your repo never gets persona files.

# Install + activate + render + print rendered output, one round-trip:
frameshift use cryptographic --from ./personas

# Or, split:
frameshift install cryptographic@0.1.0 --from-path ./personas/cryptographic
frameshift activate cryptographic

All state lives in $XDG_DATA_HOME/frameshift/:

cache/<sha256>/                          # Content-addressed pack cache
projects/<project-id>/
  config.toml                            # Declared dependencies
  lock.toml                              # Exact versions, hashes, author pubkeys
  active                                 # Currently active persona
  personas/<name>/
    source/                              # Pack contents (AGENTS.md + pack.toml)
    rendered/{claude,codex,gemini,generic}/   # Per-agent rendered output
    growth.md                            # Local-only, append-only
  orchestrator/                          # Per-project automate mode + audit state

Project ID is sha256(realpath(project_root)). Your project tree is never written to.

Persona source format

A persona is a directory containing two files:

personas/<name>/
  AGENTS.md     # The freeform persona body (identity, rules, frame, skills, growth notes)
  pack.toml     # Manifest: name, version, license, author, capability manifest

Example pack.toml:

schema_version = 1
name = "cryptographic"
version = "0.1.0"
author_handle = "ghost-frame"
author_pubkey = "ed25519:<hex>"
license = "Elastic-2.0"

[capability_manifest]
required_tools = ["Read", "Edit", "Write", "Bash"]
network_egress = false

AGENTS.md is freeform markdown -- L2 anchor, default questions, rules, skills, classification axis, cascade anchors, growth integration. Structure follows the L1/L2/L3 behavioral-architecture pattern described in personas/README.md.

A typed-source format (structured TOML with separate rules.toml, skills.toml, semantic diffs, patch operations) lives in the frameshift-source crate as the next-generation persona format. The live install path uses freeform AGENTS.md today.

Memory

Personas can declare a memory requirement in their pack manifest. The runtime satisfies it through a pluggable adapter trait with backends for HTTP APIs and local SQLite (full-text search). Any knowledge system that exposes store/search/recall endpoints works -- Kleos is the reference integration.

Growth

Growth is local. A single append-only file per installed persona, stored in the central store. Sessions deposit findings -- things learned, mistakes caught, patterns discovered. Future sessions read them back. Growth never flows upstream -- it stays on your machine, in your project context.

A persona is not static. It remembers what happened last time.

CLI

frameshift install <name@version>            # Install a persona pack
frameshift install <name@version> --from-path <dir>  # Install from local directory
frameshift activate <name>                   # Set active persona for this project
frameshift use <name> --from <library>       # Install on demand + activate + print rendered persona
frameshift select [--task TEXT] [--library DIR]      # Rank candidates with score/confidence/rationale
frameshift automate <on|off|status|lock|unlock>      # Per-project automate-mode state machine
frameshift sync                              # Reconcile central store with lockfile
frameshift grow append <persona> <text>      # Append a line to a persona's growth log
frameshift migrate                           # Move legacy project files into the central store
frameshift gc                                # Remove unreferenced cache entries
frameshift project-id                        # Print hashed project ID

Building

cargo build
cargo test

Running from source

cargo run -p frameshift-cli -- project-id
cargo run -p frameshift-cli -- install cryptographic@0.1.0 --from-path personas/cryptographic

Configuration

Server

Variable Default Purpose
BIND_ADDR 0.0.0.0:3000 HTTP bind address
POSTGRES_URL "" PostgreSQL connection URL
OBJECT_STORE_ROOT /tmp/frameshift-objects Filesystem object store root
LOG_LEVEL info Log filter
LOG_FORMAT text text or json
MAX_REQUEST_BYTES 1048576 Max request body size
MAX_SEARCH_LIMIT 200 Max search limit
SHUTDOWN_GRACE 30 Grace period in seconds

License

Elastic License 2.0. See LICENSE for details.

Commercial licensing

The Elastic License 2.0 prohibits offering FrameShift to third parties as a hosted or managed service. To sell, host, or distribute FrameShift on your own platform, contact us for a commercial license: support@syntheos.dev.

About

Not a AGENTS.md swapper. A persona runtime for AI coding agents: typed TOML source compiles to per-agent renders, distributed as Ed25519-signed content-addressed packs.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages