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
59 changes: 33 additions & 26 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
# Ripple

**A local authorization gate for AI coding agents.**
\*_A local authorization gate for AI coding agents._

run command for demo in your terminal

```txt
npx @getripple/cli demo
```

Ripple is a local authorization gate for AI coding agents that defines what an
agent may change, checks the real Git diff, and returns continue, repair, or
Expand Down Expand Up @@ -42,6 +48,7 @@ The local CLI remains free and open-source. The cloud service provides the tampe
[Learn more at ripple-cloud.vercel.app](https://ripple-cloud.vercel.app)

---

[![npm cli](https://img.shields.io/npm/v/@getripple/cli.svg)](https://www.npmjs.com/package/@getripple/cli)
[![npm mcp](https://img.shields.io/npm/v/@getripple/mcp.svg)](https://www.npmjs.com/package/@getripple/mcp)
[![license](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
Expand Down Expand Up @@ -183,14 +190,14 @@ the agent crosses the boundary, Ripple stops and gives a concrete review packet.

Ripple is one local engine exposed through MCP, CLI, hooks, CI, and VS Code.

| Layer | What it means |
| --- | --- |
| Policy | Permanent repo rules in `.ripple/policy.json` |
| Intent | Temporary approved boundary for the current task |
| Git diff | The staged or changed files Ripple checks |
| MCP | Structured tools for AI agents |
| Hook | Local pre-commit gate before code enters history |
| CI | Pull request gate before merge |
| Layer | What it means |
| -------- | ------------------------------------------------ |
| Policy | Permanent repo rules in `.ripple/policy.json` |
| Intent | Temporary approved boundary for the current task |
| Git diff | The staged or changed files Ripple checks |
| MCP | Structured tools for AI agents |
| Hook | Local pre-commit gate before code enters history |
| CI | Pull request gate before merge |

The model is intentionally small:

Expand All @@ -205,13 +212,13 @@ Gate decides whether the agent may continue.

Ripple stores the freedom level the agent was given before editing.

| Mode | Agent is allowed to |
| --- | --- |
| `brainstorm` | Suggest and explain only. No edits. |
| `function` | Edit only the approved symbol. |
| `file` | Edit only the approved file. |
| `task` | Edit files in the saved task plan. |
| `pr` | Complete low-risk PR work for human review before merge. |
| Mode | Agent is allowed to |
| ------------ | -------------------------------------------------------- |
| `brainstorm` | Suggest and explain only. No edits. |
| `function` | Edit only the approved symbol. |
| `file` | Edit only the approved file. |
| `task` | Edit files in the saved task plan. |
| `pr` | Complete low-risk PR work for human review before merge. |

When an agent calls `ripple_plan_context`, it chooses one of these control
modes and can save that boundary as the active local intent.
Expand Down Expand Up @@ -295,12 +302,12 @@ Human reviews only when the boundary breaks.

## Interfaces

| Interface | Use it for |
| --- | --- |
| `@getripple/mcp` | Direct AI-agent access through MCP tools |
| `@getripple/cli` | Terminal, Git hooks, CI, local proofs |
| `@getripple/core` | Custom integrations |
| `rippleai.ripple` | Optional VS Code visual context |
| Interface | Use it for |
| ----------------- | ---------------------------------------- |
| `@getripple/mcp` | Direct AI-agent access through MCP tools |
| `@getripple/cli` | Terminal, Git hooks, CI, local proofs |
| `@getripple/core` | Custom integrations |
| `rippleai.ripple` | Optional VS Code visual context |

## Git Hooks

Expand Down Expand Up @@ -361,10 +368,10 @@ whether to commit them.

## Language Support

| Language | Status |
| --- | --- |
| TypeScript / JavaScript | Deep support for imports, exports, symbols, callers, staged drift, and blast radius |
| Python | Basic support for imports, functions, classes, methods, and file-level staged checks |
| Language | Status |
| ----------------------- | ------------------------------------------------------------------------------------ |
| TypeScript / JavaScript | Deep support for imports, exports, symbols, callers, staged drift, and blast radius |
| Python | Basic support for imports, functions, classes, methods, and file-level staged checks |

Ripple uses static analysis. It can miss runtime-only behavior, dynamic imports,
reflection, decorators, generated code, and framework-specific magic.
Expand Down
33 changes: 33 additions & 0 deletions docs/ripple-gate-demo.tape
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# VHS tape that records REAL `ripple demo` output.
#
# This replaces the previous hand-drawn GIF renderer. Every frame produced here
# is genuine terminal output from the built CLI running the real engine against
# a real temporary git repository — including the pre-commit hook rejecting the
# rogue commit. Nothing in the recording is scripted or re-enacted.
#
# Build with: npm run demo:gif (see scripts/build-vhs-gate-demo.js)

Output resources/ripple-gate-demo.gif

Set Shell bash
Set FontSize 15
Set Width 1200
Set Height 820
Set Padding 24
Set Framerate 12
Set Theme "Catppuccin Mocha"

# The demo paces itself (it detects a TTY, which VHS provides), so the tape does
# not need Sleep directives between scenes — only a settle at each end.
Hide
Type "clear"
Enter
Show

Sleep 800ms
Type "ripple demo"
Sleep 600ms
Enter

# The demo's own pacing runs ~30s; wait past it, then hold on the final frame.
Sleep 40s
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "ripple",
"displayName": "Ripple — Local Authorization Gate",
"description": "VS Code interface for Ripple's local authorization gate: live context, focus files, blast-radius signals, and safer AI-agent workflow prompts.",
"version": "1.0.13",
"version": "1.0.14",
"publisher": "rippleai",
"author": {
"name": "Raushan Soni"
Expand Down
13 changes: 13 additions & 0 deletions packages/cli/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,18 @@
# @getripple/cli Changelog

## [1.0.14] - 2026-07-21

### Fixed
- `ripple gate` no longer consumes the saved intent on a passing preview run; consumption now happens only in the post-commit hook, after a real commit.
- `ripple gate --json` no longer prints a trailing plain-text message after the JSON payload.
- `ripple demo --json` now honors `--json` instead of printing ANSI prose, and no longer calls `console.clear()` (which wiped terminal scrollback).
- Installing Ripple's git hooks now updates an existing hook block in place when its contents changed, instead of reporting "already-present" forever.
- `ripple demo` now runs against a real installed pre-commit hook and a real `git commit` for every scenario shown, including the blocked one, instead of narrating a result.

### Added
- `ripple demo --publish`: opt-in publish of a demo run to Ripple Cloud, printing a public share link.
- Update package metadata to depend on `@getripple/core@^1.0.14`.

## [1.0.9] - 2026-06-13

### Changed
Expand Down
4 changes: 2 additions & 2 deletions packages/cli/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@getripple/cli",
"version": "1.0.13",
"version": "1.0.14-beta.0",
"description": "CLI, Git hook, and CI enforcer for Ripple's local authorization gate for AI coding agents.",
"license": "MIT",
"type": "commonjs",
Expand Down Expand Up @@ -44,7 +44,7 @@
"build": "tsc -p tsconfig.json"
},
"dependencies": {
"@getripple/core": "^1.0.13"
"@getripple/core": "^1.0.14-beta.0"
},
"devDependencies": {
"@types/node": "^18.0.0",
Expand Down
Loading
Loading