Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ ls/docs/local-context/** export-ignore
ls/logs/ export-ignore
ls/logs/** export-ignore
ls/skills/ls-superpowers/references/upstream/**/UPSTREAM_SKILL.source.md whitespace=-blank-at-eol,-blank-at-eof
# Preserve the upstream JetBrains SIL OFL file byte-for-byte, including its spaces.
assets/brand/fonts/OFL.txt whitespace=-blank-at-eol

# Repository release ancestry is not a converted-project policy.
.localsetup-release.json export-ignore
6 changes: 3 additions & 3 deletions .localsetup-release.json
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
{
"schema_version": 1,
"anchor": {
"commit": "186ca9ed43e74408f55b3dd5a2b57f6f23a0dc95",
"version": "4.22.7",
"tag": "v4.22.7"
"commit": "51fbdf7c94f1f6087ecc69a99cf4d037a0c76117",
"version": "5.6.2",
"tag": "v5.6.2"
},
"overrides": [],
"policy": "sequential-logical-slices"
Expand Down
37 changes: 23 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
# LocalSetup

<p align="center">
<img src="assets/localsetup-readme-hero.png" alt="LocalSetup: portable skills and deliberate workflows, with one package library serving selected agent hosts" width="960">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="assets/localsetup-readme-hero-dark.png">
<source media="(prefers-color-scheme: light)" srcset="assets/localsetup-readme-hero.png">
<img src="assets/localsetup-readme-hero.png" alt="LocalSetup (LS): Own your stack. A repo-local operating layer for coding agents, from reading through review and application." width="960">
</picture>
</p>

<p align="center">
Expand All @@ -10,7 +14,7 @@
<a href="ls/docs/PLATFORM_REGISTRY.md"><img src="https://img.shields.io/badge/platforms-cursor%20%7C%20claude--code%20%7C%20codex%20%7C%20openclaw%20%7C%20kilo%20%7C%20opencode-1f6feb" alt="Supported platforms"></a>
</p>

**Version:** 5.6.2<br>
**Version:** 5.7.0<br>

**LocalSetup gives coding agents a repo-local operating layer.**

Expand All @@ -21,18 +25,15 @@ LocalSetup provides capability skills, executable workflow packages, explicit ad
Start with the [quickstart](ls/docs/QUICKSTART.md) or browse the [documentation](ls/docs/README.md). The [latest published release](https://github.com/CruxExperts/localsetup/releases/latest) provides release notes and downloads.

<!-- release-summary:start -->
## What's new in 5.6.2
## What's new in 5.7.0

LocalSetup 5.6.2 introduces explicit OpenPGP authority and protected key lifecycle operations, authenticated Agent Q transport, and bounded verified file reading in LSCli. The Agent Q registry and SDK file-read response change in this major release; existing identities and historical files require an intentional migration.
LocalSetup 5.7.0 gives its GitHub documentation a consistent light and dark visual identity. The README hero and current architecture and installation diagrams use the approved LocalSetup palette, mark, and typography while retaining their technical content and accessible descriptions.

- **OpenPGP identity and recovery:** Inspect and generate profile-bound keys, keep passphrases in ENV or Envman references, create ciphertext-only protected backups, and restore into an isolated private home. Recovery authority is independent of possession of an old operational key.
- **Authenticated authority transitions:** Candidate and existing owner proofs, publisher rotation, replay protection, scheduled overlap, revocation, and independent recovery use a persistent private authority store. Verification alone does not activate a key.
- **Sealed Agent Q transport:** File drops and mail carry one opaque signed and encrypted envelope. Inbound processing selects the peer and full fingerprint from private authority before decrypting, records acceptance before queue promotion, and rejects legacy traffic from normal ingest.
- **Verified file pages:** LSCli and its SDK return bounded JSON pages for granted reads, including sealed ciphertext after verification. Each continuation rechecks source and authority, and disclosure remains an explicit grant.
- **Installed discovery and workflows:** The runtime reports shipped OpenPGP, reader, Agent Q and workflow contracts from the selected installed release. The lifecycle and compact worker workflows ship as guidance; installation neither generates keys nor enrolls trust.
- **Release verification:** The signed release path checks committed documentation and version artifacts, runs framework validation, verifies the signed tag and prepares a draft before publication.
- **Theme-aware graphics:** The README hero, architecture diagram, and installation flow each have light and dark images selected by GitHub's color scheme. Existing light image paths remain valid.
- **Reproducible brand assets:** The graphics renderer uses approved tokens and pinned JetBrains Mono v2.304 Regular and SemiBold files. The original font license and hashes are recorded with the source.
- **Asset inventory and brand contract:** Documentation checks recognize images in picture sources, and the brand guide records the visual rules and future AstroSite handoff. Nerd Font glyphs remain an optional site profile.

See the [5.6.2 release guide](ls/docs/releases/5.6.2.md) for compatibility, updating, and verification.
See the [5.7.0 release guide](ls/docs/releases/5.7.0.md) for compatibility, updating, and verification.
<!-- release-summary:end -->

The [4.4.0 guide](ls/docs/releases/4.4.0.md) remains available as release history.
Expand All @@ -56,7 +57,11 @@ That means your agent setup travels with the repo, survives context resets, and
## How it fits together

<p align="center">
<img src="assets/localsetup-architecture.png" alt="Framework source flows through the LocalSetup CLI into a managed library and selected project adapters; custom project skills stay in place" width="960">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="assets/localsetup-architecture-dark.png">
<source media="(prefers-color-scheme: light)" srcset="assets/localsetup-architecture.png">
<img src="assets/localsetup-architecture.png" alt="LocalSetup architecture: source checkout flows through the CLI to a managed library and selected project adapters; verification, lock metadata, rollback records, and custom project skills are preserved." width="960">
</picture>
</p>

The registered LocalSetup source checkout is the canonical framework source. The installer resolves configuration, creates the managed package library for skills and workflow packages, attaches only explicitly selected target adapter paths, writes target lock/report metadata under `.localsetup/`, and records an install journal under `.localsetup/install-journal/`. Consuming repos do not receive a copied `ls/` by default.
Expand All @@ -79,7 +84,7 @@ Start with the [workflow packages guide](ls/docs/WORKFLOW_PACKAGES.md) for usage
<!-- facts-block:start -->
| Fact | Value |
|---|---|
| Current version | `5.6.2` |
| Current version | `5.7.0` |
| Supported platforms | `codex, claude-code, cursor, kilo, opencode, openclaw, github-copilot-cli, github-copilot-vscode, cline-cli, cline-vscode, amp-cli, goose-cli, pi-cli, hermes-agent, qwen-code-cli, kimi-cli, factory-droid, antigravity-app, gemini-cli, omp-cli` |
| Shipped skills | `105` |
| Workflow packages | `18` |
Expand Down Expand Up @@ -243,7 +248,11 @@ See the generated catalogs for all shipped skills and workflows: [ls/docs/SKILLS
## Install lifecycle

<p align="center">
<img src="assets/localsetup-install-lifecycle.png" alt="Inspect the target, plan changes, confirm scope, apply, and verify; rollback restores recorded managed paths" width="960">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="assets/localsetup-install-lifecycle-dark.png">
<source media="(prefers-color-scheme: light)" srcset="assets/localsetup-install-lifecycle.png">
<img src="assets/localsetup-install-lifecycle.png" alt="LocalSetup install flow: inspect with doctor and context, plan and confirm scope, apply, verify, and use rollback to restore recorded managed paths." width="960">
</picture>
</p>

The Bash wrapper stays thin. The Python CLI handles preflight, dependency setup, adapter planning, managed skill installation, verification, generated docs, packaging, and rollback.
Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
5.6.2
5.7.0
9 changes: 6 additions & 3 deletions assets/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,11 @@ This file is maintained by `ls/tools/docs_alignment.py apply --scope assets` and

| Asset | Type | Dimensions | References | Notes |
|---|---|---|---|---|
| `assets/localsetup-architecture.png` | png | 1536x1024 | `README.md`, `ls/README.md`, `ls/docs/README.md` | Repository license unless otherwise documented |
| `assets/localsetup-install-lifecycle.png` | png | 1536x1024 | `README.md`, `ls/README.md`, `ls/docs/MULTI_PLATFORM_INSTALL.md` | Repository license unless otherwise documented |
| `assets/localsetup-architecture-dark.png` | png | 1280x740 | `README.md`, `ls/README.md`, `ls/docs/README.md` | Crux Experts LLC private asset terms; see [visual asset rights](brand/ASSET_LICENSE.md) |
| `assets/localsetup-architecture.png` | png | 1280x740 | `README.md`, `ls/README.md`, `ls/docs/README.md` | Crux Experts LLC private asset terms; see [visual asset rights](brand/ASSET_LICENSE.md) |
| `assets/localsetup-install-lifecycle-dark.png` | png | 1280x760 | `README.md`, `ls/README.md`, `ls/docs/MULTI_PLATFORM_INSTALL.md` | Crux Experts LLC private asset terms; see [visual asset rights](brand/ASSET_LICENSE.md) |
| `assets/localsetup-install-lifecycle.png` | png | 1280x760 | `README.md`, `ls/README.md`, `ls/docs/MULTI_PLATFORM_INSTALL.md` | Crux Experts LLC private asset terms; see [visual asset rights](brand/ASSET_LICENSE.md) |
| `assets/localsetup-logo.png` | png | 1254x1254 | `ls/docs/releases/4.4.0.md` | Repository license unless otherwise documented |
| `assets/localsetup-readme-hero.png` | png | 1536x1024 | `README.md` | Repository license unless otherwise documented |
| `assets/localsetup-readme-hero-dark.png` | png | 1280x400 | `README.md` | Crux Experts LLC private asset terms; see [visual asset rights](brand/ASSET_LICENSE.md) |
| `assets/localsetup-readme-hero.png` | png | 1280x400 | `README.md` | Crux Experts LLC private asset terms; see [visual asset rights](brand/ASSET_LICENSE.md) |

20 changes: 20 additions & 0 deletions assets/brand/ASSET_LICENSE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Visual asset rights

The six current light and dark README/documentation graphics generated by
`ls/tools/render_brand_graphics.py` are original LocalSetup visual assets:

Copyright © 2026 Crux Experts LLC

https://www.cruxexperts.com/
Private asset. Property of Crux Experts LLC. Use, reproduction, modification,
distribution, or publication without prior written permission is prohibited.

Those terms are embedded in each PNG. The repository's general MIT license does
not grant rights to these specifically identified visual assets. The historical
`assets/localsetup-logo.png` retains its existing provenance and treatment.

`assets/brand/fonts/JetBrainsMono-Regular.ttf` and
`assets/brand/fonts/JetBrainsMono-SemiBold.ttf` are third-party JetBrains Mono
font software. They retain the JetBrains Mono Project Authors' copyright and
the [SIL Open Font License 1.1](fonts/OFL.txt). The private visual-asset terms
above do not apply to these font files.
25 changes: 25 additions & 0 deletions assets/brand/font-lock.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"schema": "localsetup.brand-font-lock.v1",
"family": "JetBrains Mono",
"release": "v2.304",
"upstream": "https://github.com/JetBrains/JetBrainsMono/releases/tag/v2.304",
"release_archive_sha256": "6f6376c6ed2960ea8a963cd7387ec9d76e3f629125bc33d1fdcd7eb7012f7bbf",
"files": [
{
"path": "assets/brand/fonts/JetBrainsMono-Regular.ttf",
"weight": 400,
"sha256": "a0bf60ef0f83c5ed4d7a75d45838548b1f6873372dfac88f71804491898d138f"
},
{
"path": "assets/brand/fonts/JetBrainsMono-SemiBold.ttf",
"weight": 600,
"sha256": "1b3bfa1ed5665a4ce3f9feb68d2d4e40e70bf8b4b7d9a3edd418f321b4e166a0"
}
],
"license": {
"path": "assets/brand/fonts/OFL.txt",
"sha256": "30f0c136e3c88e422d0791acd97238870f9054a9729bc34cf2ff0d4ed8cac4ad"
},
"ligatures": false,
"third_party_notice": "JetBrains Mono remains subject to the original SIL Open Font License in assets/brand/fonts/OFL.txt."
}
Binary file added assets/brand/fonts/JetBrainsMono-Regular.ttf
Binary file not shown.
Binary file added assets/brand/fonts/JetBrainsMono-SemiBold.ttf
Binary file not shown.
93 changes: 93 additions & 0 deletions assets/brand/fonts/OFL.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
Copyright 2020 The JetBrains Mono Project Authors (https://github.com/JetBrains/JetBrainsMono)

This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
https://scripts.sil.org/OFL


-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------

PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.

The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.

DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.

"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).

"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).

"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.

"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.

PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:

1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.

2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.

3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.

4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.

5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.

TERMINATION
This license becomes null and void if any of the above conditions are
not met.

DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.
108 changes: 108 additions & 0 deletions assets/brand/tokens.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
{
"name": "LocalSetup UI",
"version": "1.0.0",
"format": "localsetup.tokens.v1",
"copyright": "Copyright © 2026 Crux Experts LLC",
"website": "https://www.cruxexperts.com/",
"usage_terms": "Private asset. Property of Crux Experts LLC. Use, reproduction, modification, distribution, or publication without prior written permission is prohibited.",
"theme": {
"light": {
"bg": "#FFFFFF",
"surface": "#F6F8FC",
"raised": "#EDF2F9",
"text": "#14213B",
"muted": "#4D5E78",
"border": "#CDD6E4",
"control": "#73849E",
"accent": "#173DA6",
"accent-hover": "#102D80",
"accent-soft": "#EAF0FF",
"on-accent": "#FFFFFF",
"success": "#126746",
"success-soft": "#EAF7EF",
"warning": "#825000",
"warning-soft": "#FFF5DF",
"danger": "#B0253E",
"danger-soft": "#FDEDF0",
"info": "#205AA4",
"info-soft": "#EBF3FE",
"focus": "#173DA6"
},
"dark": {
"bg": "#071012",
"surface": "#0D191D",
"raised": "#14262C",
"text": "#E5EEF0",
"muted": "#A2B5BD",
"border": "#2C424B",
"control": "#607D87",
"accent": "#36E4C6",
"accent-hover": "#85F0DC",
"accent-soft": "#103A35",
"on-accent": "#051916",
"success": "#74DEAF",
"success-soft": "#12372A",
"warning": "#F2CA73",
"warning-soft": "#392C13",
"danger": "#FFA0AD",
"danger-soft": "#43232B",
"info": "#98C8FF",
"info-soft": "#19334E",
"focus": "#36E4C6"
}
},
"typography": {
"font-family": "\"JetBrains Mono\", \"Cascadia Mono\", \"SFMono-Regular\", \"DejaVu Sans Mono\", \"Liberation Mono\", Consolas, monospace",
"sizes": {
"display": "3.25rem",
"h1": "2.5rem",
"h2": "1.75rem",
"h3": "1.375rem",
"h4": "1.125rem",
"h5": "1rem",
"h6": ".875rem",
"body": ".9375rem",
"small": ".8125rem",
"caption": ".75rem"
},
"weight": {
"regular": 400,
"medium": 500,
"semibold": 600,
"bold": 700
},
"line-height": {
"body": 1.65,
"heading": 1.2,
"terminal": 1.6
}
},
"space": [
4,
8,
12,
16,
24,
32,
48,
64
],
"radii": {
"control": "4px",
"panel": "6px"
},
"motion": {
"fast": "100ms",
"normal": "160ms",
"autoplay": false
},
"branding": {
"wordmark": "LocalSetup",
"accent_letters": [
"L",
"S"
],
"monogram": "[LS]",
"command_casing": "Source-defined; never apply brand capitalization to commands"
}
}
Binary file added assets/localsetup-architecture-dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/localsetup-architecture.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/localsetup-install-lifecycle-dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/localsetup-install-lifecycle.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/localsetup-readme-hero-dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/localsetup-readme-hero.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading