From 70cfa54eef3c4653325e7f33b88e672dcf8b42ca Mon Sep 17 00:00:00 2001 From: Ayla Croft Date: Wed, 23 Sep 2026 16:59:31 -0400 Subject: [PATCH] docs: give the README Trinity's own identity The logo is the one already in use on the platform's other project, copied in rather than reinterpreted: docs/assets/trinity-icon.png, resized from 1024px and stripped of metadata, 1.5 MB down to 182 KB. The wordmark is block letters on a 37x5 grid, emitted as one rectangle per run of filled cells rather than as text. No font is involved, so it renders the same wherever it is shown and stays sharp at any size, and the neon gradient is taken from the logo so the two read as one mark. Horizontal and vertical runs are both merged, because emitting a cell at a time left the glow filter scalloping the edges of every stem. Responsive by having two compositions rather than by hoping one scales. The wide one carries outer padding; the narrow one, served under 600px by a picture element, runs edge to edge, because on a phone the mark is scaled to the viewport and padding is width the letters could have used. Checked at desktop and phone widths, on GitHub's dark ground and on white, by rendering it in a browser rather than by looking at the file. The header also gains the badge row, the one-line statement of what Trinity is, and links to the five documents a reader actually wants first: quick start, architecture, security model, assurance case, roadmap. Corrected while here: the status line said 25 slices and there are 26, since the supply chain slice landed after that sentence was written. Signed-off-by: Ayla Croft --- README.md | 38 +++++++++++++++--- docs/assets/trinity-icon-128.png | Bin 0 -> 19588 bytes docs/assets/trinity-icon.png | Bin 0 -> 182654 bytes docs/assets/wordmark-sm.svg | 67 +++++++++++++++++++++++++++++++ docs/assets/wordmark.svg | 67 +++++++++++++++++++++++++++++++ 5 files changed, 166 insertions(+), 6 deletions(-) create mode 100644 docs/assets/trinity-icon-128.png create mode 100644 docs/assets/trinity-icon.png create mode 100644 docs/assets/wordmark-sm.svg create mode 100644 docs/assets/wordmark.svg diff --git a/README.md b/README.md index a9b42cb..35ed782 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,36 @@ -# Trinity +
+ + + + + + TRINITY + + +### A personal AI agent that runs on your own machine + +It remembers you, learns procedures, acts through tools under a permission gate,
+reaches you on whatever surface you are using, and does not lose your work when something crashes. + +
[![OpenSSF Best Practices](https://www.bestpractices.dev/projects/14772/badge)](https://www.bestpractices.dev/projects/14772) +[![Gate](https://img.shields.io/github/actions/workflow/status/ScriptKittyOS/Trinity/gate.yml?branch=main&style=flat-square&label=gate&labelColor=1b2420&color=2ea043)](https://github.com/ScriptKittyOS/Trinity/actions/workflows/gate.yml) +[![License](https://img.shields.io/badge/license-Apache--2.0-2ea043?style=flat-square&labelColor=1b2420)](LICENSE) +[![Elixir](https://img.shields.io/badge/Elixir%20%2F%20OTP-on%20the%20BEAM-2ea043?style=flat-square&labelColor=1b2420)](#why-the-beam) + +
+ +**[Quick start](#running-from-source)**  ·  +**[Architecture](docs/01-architecture.md)**  ·  +**[Security model](docs/07-security-model.md)**  ·  +**[Assurance case](docs/10-assurance-case.md)**  ·  +**[Roadmap](ROADMAP.md)** + +
-A personal AI agent that runs on your own machine. It remembers you, learns procedures, acts -through tools under a permission gate, reaches you on whatever surface you are using, and does -not lose your work when something crashes. +--- Trinity is built on Elixir and the BEAM, with Phoenix LiveView for the interface, and ships as a desktop application. Apache-2.0, developed in the open from the first commit. @@ -14,8 +39,9 @@ desktop application. Apache-2.0, developed in the open from the first commit. Pre-alpha, and usable from source. Milestones M0 to M4 are approved, **M5a Automates** with them (050, the scheduler; 059, the MCP measurement; 060, the MCP client; 061, the MCP server; 062, MCP -authorization), and the first slice of M5b (070, the gateway core): 25 slices, each merged with a -merge commit and tagged `slice/NNN` (`git tag -l 'slice/*' | wc -l` → 25, on 2026-09-23). What +authorization), and the first slice of M5b (070, the gateway core), with 002 (the supply chain +slice) beside them: 26 slices, each merged with a merge commit and tagged `slice/NNN` +(`git tag -l 'slice/*' | wc -l` → 26, on 2026-09-23). What that means in practice: **Assessed against a recognised baseline.** Trinity holds the diff --git a/docs/assets/trinity-icon-128.png b/docs/assets/trinity-icon-128.png new file mode 100644 index 0000000000000000000000000000000000000000..b1667bfa83460925c1ce5141338dc6ecc984769a GIT binary patch literal 19588 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 literal 0 HcmV?d00001 diff --git a/docs/assets/trinity-icon.png b/docs/assets/trinity-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..a16e7e050f73205fda2cd79b9072afd9c1a6296b GIT binary patch literal 182654 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 + + + TRINITY + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/wordmark.svg b/docs/assets/wordmark.svg new file mode 100644 index 0000000..eb0002c --- /dev/null +++ b/docs/assets/wordmark.svg @@ -0,0 +1,67 @@ + + + + TRINITY + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +