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
6 changes: 0 additions & 6 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ We are rats. We accept that.
- **Students and beginners**: Genuinely willing to learn and get hands dirty, not here to beg for ready-made answers
- **Anyone, any language, any region**: If you use this tool, you are part of the community
- **AI Agents**: Automation pipelines, Agent workflows, LLM-driven toolchains — as long as behaviour complies with this code, Issues and PRs from Agents are treated equally

We welcome Issues, PRs, discussions, rants — as long as you are serious, regardless of whether the author is human or Agent.

---
Expand All @@ -31,7 +30,6 @@ The following behaviours result in immediate Issue closure / PR rejection / acco
- **Resource predators**: Stable income, corporate budget, yet competing with marginal developers for free resources and community attention
- **Harassment**: Personal attacks, discrimination, stalking, harassing maintainers or other contributors
- **Hustle-culture pushers**: Glorify overwork, promote 996, or use this tool to exploit other developers

---

## Contributor Obligations
Expand All @@ -42,14 +40,12 @@ If you submit an Issue (human or Agent):
- State your OS, Node.js version, and tool version
- Agent submissions must include trigger context (call chain, input params, error stack)
- Do not rush maintainers — they are humans, not customer support

If you submit a PR (human or Agent):

- Open an Issue first to discuss, avoid wasted effort
- Follow existing code style (TypeScript strict, functional, immutable-first)
- Do not sneak unrelated changes into a PR
- Agent-generated PRs must declare the generation tool and prompt source in the description; do not disguise as hand-written

---

## Maintainer Rights
Expand All @@ -59,13 +55,11 @@ Maintainers may:
- Close any Issue or PR without explanation
- Ban any account violating this code
- Amend this code at any time

Maintainers are not obligated to:

- Respond to every Issue
- Accept every PR
- Be responsible for anyone's commercial needs

---

## Licence and Enforcement
Expand Down
10 changes: 5 additions & 5 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ members = [
]

[workspace.package]
version = "2026.10318.12034"
version = "2026.10319.10359"
edition = "2024"
license = "AGPL-3.0-only"
authors = ["TrueNine"]
Expand Down
39 changes: 16 additions & 23 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ So as a rat, I eat whatever I can reach: maggots in the sewer, leftovers in the
- Does not expect any platform to grant an "official all-in-one solution"
- Does not rely on privileged interfaces of any single IDE / CLI
- Treats every readable config, prompt, and memory file as "edible matter" to be carried, dismantled, and recombined

In this ecosystem, giants monopolise the resources, and developers are thrown into the corner like rats.
`memory-sync` accepts this cruel reality, does not fantasise about fairness, and focuses on one thing only: **to chew up every fragment of resource you already have, and convert it into portable "memory" that can flow between any AI tool.**

Expand All @@ -27,7 +26,6 @@ What can it help you do?
- **Read-only source files**: never modifies your original repository directly, only reads and transforms, then materialises the result on the target tool side.
- **Full wipe**: on sync, erases all stale prompt traces in target tools—prompts are fully computable and auditable, leaving no residue for bad actors.
- **Prompts grow with you only**: memory follows you as a person, not the project. Someone else takes over the project—they cannot take your context. You move to a new project—your accumulated knowledge moves with you intact.

## Install

```sh
Expand All @@ -36,10 +34,10 @@ npm install -g @truenine/memory-sync

## Supported Tools

| Type | Tools |
| ---- | --------------------------------------- |
| IDE | Cursor, Kiro, Windsurf, JetBrains AI |
| CLI | Claude CLI, Gemini CLI, Codex CLI, Warp |
| Type | Tools |
| --- | --- |
| IDE | Cursor, Kiro, Windsurf, JetBrains AI |
| CLI | Claude CLI, Gemini CLI, Codex CLI, Warp |

More platforms being added continuously.

Expand All @@ -49,7 +47,6 @@ More platforms being added continuously.
- **Core** (Rust): file I/O, directory traversal, format conversion.
- **Config DSL** (JSON): reads only the global config file `~/.aindex/.tnmsc.json`, which defines sync rules and target tools.
- **GUI** (Tauri): desktop app that calls the CLI as its backend, providing a visual interface.

## FAQ

**When AI tools finally have a unified standard, what use will this project be?**
Expand All @@ -73,48 +70,44 @@ To use `memory-sync` you need:
- Solid development experience, years of working with various dev tools
- Proficiency with version control (Git)
- Proficiency with the terminal

---

- You are writing code in a forgotten sewer.
No one will proactively feed you, not even a tiny free quota, not even a half-decent document.
No one will proactively feed you, not even a tiny free quota, not even a half-decent document.
- As a rat, you can barely get your hands on anything good:
scurrying between free tiers, trial credits, education discounts, and random third-party scripts.
scurrying between free tiers, trial credits, education discounts, and random third-party scripts.
- What can you do?
Keep darting between IDEs, CLIs, browser extensions, and cloud Agents, copying and pasting the same memory a hundred times.
Keep darting between IDEs, CLIs, browser extensions, and cloud Agents, copying and pasting the same memory a hundred times.
- You leech API offers from vendors day after day:
today one platform runs a discount so you top up a little; tomorrow another launches a promo so you rush to scrape it.
today one platform runs a discount so you top up a little; tomorrow another launches a promo so you rush to scrape it.
- Once they have harvested the telemetry, user profiles, and usage patterns they want,
they can kick you—this stinking rat—away at any moment: price hikes, rate limits, account bans, and you have no channel to complain.

they can kick you—this stinking rat—away at any moment: price hikes, rate limits, account bans, and you have no channel to complain.
If you are barely surviving in this environment, `memory-sync` is built for you:
carry fewer bricks, copy prompts fewer times—at least on the "memory" front, you are no longer completely on the passive receiving end.

## Who is NOT welcome

- Your income is already fucking high.
Stable salary, project revenue share, budget to sign official APIs yearly.
Stable salary, project revenue share, budget to sign official APIs yearly.
- And yet you still come down here,
competing with us filthy sewer rats for the scraps in the slop bucket.
competing with us filthy sewer rats for the scraps in the slop bucket.
- If you can afford APIs and enterprise plans, go pay for them.
Do things that actually create value—pay properly, give proper feedback, nudge the ecosystem slightly in the right direction.
Do things that actually create value—pay properly, give proper feedback, nudge the ecosystem slightly in the right direction.
- Instead of coming back down
to strip away the tiny gap left for marginalised developers, squeezing out the last crumbs with us rats.
to strip away the tiny gap left for marginalised developers, squeezing out the last crumbs with us rats.
- You are a freeloader.
Everything must be pre-chewed and spoon-fed; you won't even touch a terminal.
Everything must be pre-chewed and spoon-fed; you won't even touch a terminal.
- You love the grind culture.
Treating "hustle" as virtue, "996" as glory, stepping on peers as a promotion strategy.
Treating "hustle" as virtue, "996" as glory, stepping on peers as a promotion strategy.
- You leave no room for others.
Not about whether you share—it's about actively stomping on people, competing maliciously, sustaining your position by suppressing peers, using others' survival space as your stepping stone.

Not about whether you share—it's about actively stomping on people, competing maliciously, sustaining your position by suppressing peers, using others' survival space as your stepping stone.
In other words:
**this is not a tool for optimising capital costs, but a small counterattack prepared for the "rats with no choice" in a world of extreme resource inequality.**

## Created by

- [TrueNine](https://github.com/TrueNine)
- [zjarlin](https://github.com/zjarlin)

## License

[AGPL-3.0](LICENSE)
12 changes: 3 additions & 9 deletions SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
Only the latest release receives security fixes. No backport patches for older versions.

| Version | Supported |
| ------- | --------- |
| Latest | ✅ |
| Older | ❌ |
| --- | --- |
| Latest | ✅ |
| Older | ❌ |

## Reporting a Vulnerability

Expand All @@ -17,22 +17,19 @@ Contact the maintainer privately via:

- GitHub Security Advisory: submit a private report under the repository's **Security** tab
- Email: contact [@TrueNine](https://github.com/TrueNine) directly

Please include:

- Vulnerability description and impact scope
- Reproduction steps (minimal example)
- Your OS, Node.js version, and `memory-sync` version
- Suggested fix if any

## Response Timeline

The maintainer is a person, not a security team. No SLA, no 24-hour response guarantee.

- Will acknowledge receipt as soon as possible
- Will release a patch within a reasonable timeframe after confirmation
- Will publicly disclose vulnerability details after the fix is released

Don't rush.

## Scope
Expand All @@ -42,20 +39,17 @@ Don't rush.
- **Reads**: user `.src.mdx` source files, the global config file (`~/.aindex/.tnmsc.json`)
- **Writes**: target tool config directories (`.cursor/`, `.claude/`, `.kiro/`, etc.)
- **Cleans**: removes stale files from target directories during sync

The following are **out of scope**:

- Security vulnerabilities in target AI tools themselves
- Compliance of user prompt content
- Supply chain security of third-party plugins (`packages/`) — all plugins are `private` and not published to npm

## Design Principles

- **Never modifies source files**: read-only on source; writes only to target
- **Full clean mode**: after sync, only explicitly authorised content remains in target directories — no hidden residue
- **No network requests**: CLI core makes no outbound network requests (version check excepted, and times out gracefully)
- **No telemetry**: no user data collected or reported

## License

This project is licensed under [AGPL-3.0](LICENSE). Unauthorised commercial use in violation of the licence will be pursued legally.
2 changes: 1 addition & 1 deletion cli/npm/darwin-arm64/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@truenine/memory-sync-cli-darwin-arm64",
"version": "2026.10318.12034",
"version": "2026.10319.10359",
"os": [
"darwin"
],
Expand Down
2 changes: 1 addition & 1 deletion cli/npm/darwin-x64/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@truenine/memory-sync-cli-darwin-x64",
"version": "2026.10318.12034",
"version": "2026.10319.10359",
"os": [
"darwin"
],
Expand Down
2 changes: 1 addition & 1 deletion cli/npm/linux-arm64-gnu/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@truenine/memory-sync-cli-linux-arm64-gnu",
"version": "2026.10318.12034",
"version": "2026.10319.10359",
"os": [
"linux"
],
Expand Down
2 changes: 1 addition & 1 deletion cli/npm/linux-x64-gnu/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@truenine/memory-sync-cli-linux-x64-gnu",
"version": "2026.10318.12034",
"version": "2026.10319.10359",
"os": [
"linux"
],
Expand Down
2 changes: 1 addition & 1 deletion cli/npm/win32-x64-msvc/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@truenine/memory-sync-cli-win32-x64-msvc",
"version": "2026.10318.12034",
"version": "2026.10319.10359",
"os": [
"win32"
],
Expand Down
17 changes: 7 additions & 10 deletions cli/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@truenine/memory-sync-cli",
"type": "module",
"version": "2026.10318.12034",
"version": "2026.10319.10359",
"description": "TrueNine Memory Synchronization CLI",
"author": "TrueNine",
"license": "AGPL-3.0-only",
Expand All @@ -14,14 +14,11 @@
"exports": {
".": {
"types": "./dist/index.d.mts",
"import": "./dist/index.mjs",
"require": "./dist/index.cjs"
"import": "./dist/index.mjs"
},
"./globals": {
"types:require": "./dist/globals.d.cts",
"types": "./dist/globals.d.mts",
"import": "./dist/globals.mjs",
"require": "./dist/globals.cjs"
"import": "./dist/globals.mjs"
},
"./schema.json": "./dist/tnmsc.schema.json",
"./package.json": "./package.json"
Expand All @@ -30,7 +27,7 @@
"module": "./dist/index.mjs",
"types": "./dist/index.d.mts",
"bin": {
"tnmsc": "./dist/main.mjs"
"tnmsc": "./dist/index.mjs"
},
"files": [
"dist",
Expand All @@ -51,19 +48,19 @@
"registry": "https://registry.npmjs.org/"
},
"scripts": {
"build": "run-s build:deps build:napi bundle write:main-wrapper generate:schema check",
"build": "run-s build:deps build:napi bundle finalize:bundle generate:schema check",
"build:napi": "tsx ../scripts/copy-napi.ts",
"build:deps": "pnpm -F @truenine/logger -F @truenine/md-compiler -F @truenine/script-runtime run build",
"bundle": "tsx ../scripts/build-quiet.ts",
"check": "run-p typecheck lint",
"finalize:bundle": "tsx scripts/finalize-bundle.ts",
"generate:schema": "tsx scripts/generate-schema.ts",
"lint": "eslint --cache .",
"prepublishOnly": "run-s build",
"test": "run-s build:deps test:run",
"test:run": "vitest run",
"lintfix": "eslint --fix --cache .",
"typecheck": "tsc --noEmit -p tsconfig.lib.json",
"write:main-wrapper": "tsx scripts/write-main-wrapper.ts"
"typecheck": "tsc --noEmit -p tsconfig.lib.json"
},
"dependencies": {
"json5": "catalog:",
Expand Down
Loading
Loading