Metadata-Version: 2.4
Name: local-yep
Version: 0.3.5
Summary: Local Yep — a Claude-Code-native, local-first agent framework with a persistent recall->reflect memory loop. Works with your own Claude; nothing in the cloud.
Author-email: Yepgent <yepgent@gmail.com>
License: Proprietary
Project-URL: Homepage, https://yepgent.com
Project-URL: Download, https://yepgent.com/dl/
Project-URL: Changelog, https://yepgent.com/changelog
Keywords: claude-code,agent,memory,mcp,local-first
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: Other/Proprietary License
Classifier: Environment :: Console
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy>=1.24
Requires-Dist: platformdirs>=4.0
Requires-Dist: mcp<2,>=1.0
Requires-Dist: tomli>=2.0; python_version < "3.11"
Requires-Dist: install-manifest>=0.5
Requires-Dist: packaging>=21
Provides-Extra: embeddings
Requires-Dist: fastembed>=0.3; extra == "embeddings"
Provides-Extra: pro
Requires-Dist: cryptography>=42; extra == "pro"
Provides-Extra: secrets
Requires-Dist: keyring>=24; extra == "secrets"
Provides-Extra: dev
Requires-Dist: pytest>=7.4; extra == "dev"
Requires-Dist: cryptography>=42; extra == "dev"
Dynamic: license-file

<p align="center">
  <img src="https://yepgent.com/assets/local-yep-logo.svg" alt="Local Yep" width="128" height="128">
</p>

<h1 align="center">Local Yep</h1>

<p align="center">
  <strong>A local-first agent framework for your Claude Code</strong> — works with your own
  Claude (Pro/Max or API key); we sell the framework and tools, <em>never Claude</em>.
</p>

<p align="center">
  <img alt="Claude Code add-on" src="https://img.shields.io/badge/Claude_Code-add--on-0f9d76">
  <img alt="Python 3.10+" src="https://img.shields.io/badge/Python-3.10%2B-0c7d5e">
  <img alt="platforms" src="https://img.shields.io/badge/platform-win_%7C_mac_%7C_linux-2fd4a8">
  <img alt="memory 100% local" src="https://img.shields.io/badge/memory-100%25_local-0f9d76">
  <img alt="license proprietary" src="https://img.shields.io/badge/license-Proprietary-5c6862">
</p>

---

Local Yep turns your Claude Code into **Yep** — a personal agent with durable
memory and an identity that's yours. It runs on your *own* Claude and **never
touches your Claude credentials**. Memory lives in a local SQLite database under
`~/.local-yep/`; nothing in the core paths phones home.

## Why Local Yep

- 🧠 **Durable memory that's yours.** Facts, episodes, and reflections persist in
  local SQLite (FTS5). Yep recalls before it reasons and reflects after it acts —
  so it gets to know you across sessions, not just within one.
- 🔒 **Local-first, private by default.** Your memory never leaves your machine
  and the core paths open no network socket. Your Claude auth stays yours.
- 🎭 **An identity, not a chatbot.** A frozen ethical spine (honesty,
  memory-is-precious, privacy, calibrated uncertainty) plus a personalizable
  voice — name, owner, preset, and tone dials — set in a quick first-run wizard.
- 🧩 **A local tool & pack ecosystem.** Discover, install, and run tools and packs
  from a toolspace, with per-tool credentials kept in your OS keyring.
- ⚡ **Drop-in for Claude Code.** Wires in as an MCP server + hooks. Run `gent` in
  any folder, or `yepgent init` a specific project — and `yepgent uninstall`
  cleanly reverses it.

## Install

> **Requires** Python 3.10+ and your own **Claude Code**
> (https://claude.com/claude-code).

```sh
pipx install local-yep      # `pipx install yepgent` resolves to the same package
```

**Testers** — the bootstrap script also checks your prerequisites, wires the
hooks, and can apply an activation token:

```sh
# macOS / Linux
curl -fsSL https://yepgent.com/dl/install.sh -o install.sh && bash install.sh --gated

# Windows (PowerShell)
iwr https://yepgent.com/dl/install.ps1 -OutFile install.ps1; ./install.ps1 -Gated
```

With no `--wheel` / `-Wheel` it fetches the current wheel from
[yepgent.com/dl/](https://yepgent.com/dl/); pass `--wheel ./local_yep-*.whl` if
you were handed the file directly.

Then open a new terminal and run `gent`. On install you'll accept the alpha
[Terms](https://yepgent.com/dl/TERMS.md) (type `I AGREE`, or pass
`--accept-terms` for an unattended install).

**Developers:**

```sh
pip install -e .
yepgent --help
```

## Quickstart

```sh
gent                       # launch Claude Code as Yep in the current folder
gent "help me ship X"      # …with a first prompt
gent /path/to/project      # …in another folder
yepgent onboard            # set Yep's name / owner / voice anytime
```

Your first `gent` offers a quick setup (name / owner / voice) — skippable, and
one-time.

## Commands

| Command | What it does |
|---|---|
| `gent [dir] ["prompt"]` | Launch Claude Code as Yep anywhere — no per-project setup |
| `yepgent init [--force]` | Wire Yep into a specific project (managed block + hooks + MCP) |
| `yepgent upgrade` | Re-generate the wiring against the installed version |
| `yepgent uninstall [--purge-memory]` | Remove the wiring (keeps memory; `--purge-memory` wipes `~/.local-yep/`) |
| `yepgent onboard` · `identity edit` | Configure name / owner / preset / voice |
| `yepgent memory reindex \| backup \| stats` | Local memory maintenance |
| `yepgent secrets …` | Per-tool credentials in your OS keyring |
| `yepgent tools auth <tool>` | Authorize a tool's OAuth (e.g. Google) |
| `yepgent license status \| activate <token>` | Manage activation (gated builds) |
| `yepgent doctor [--json]` | Offline health report — wiring, PATH, memory DB, integrity (paste-safe for bug reports) |
| `yepgent confirm` | Type the confirmation phrase to authorize a protected-file edit (5-min token) |

## How it works

- **Memory** — `~/.local-yep/memory.db` (SQLite + FTS5). Recall is lexical (BM25)
  by default; opt in to **semantic** recall with the embeddings extra.
- **Identity** — a read-only ethical spine plus a configurable overlay, rendered
  into every session by the SessionStart hook.
- **Wiring** — a slim memory MCP server + four Claude Code hooks (SessionStart /
  UserPromptSubmit / Stop, plus a PreToolUse guard that protects the spine,
  identity, and hook wiring from unconfirmed edits). `gent` runs that wiring
  globally via a portable profile; `yepgent init` writes it into a project. Either way, your project's own
  servers (e.g. C3) keep working alongside it.

### Optional: semantic recall

```sh
pip install 'local-yep[embeddings]'   # or: pipx inject local-yep fastembed
yepgent memory reindex                # backfill vectors for existing rows
```

Adds meaning-based recall (a 768-dim local model, ~140 MB one-time download, fully
offline thereafter) alongside the lexical path. The default stays BM25 — no model
download, nothing fetched.

## Privacy & the one rule

Memory is **100% local**. We **never** sell, store, proxy, or resell Claude — you
bring your own Claude auth and it stays yours. The binding guardrails live in
`docs/auth-guardrails.md` in the repository.

## Docs

- [Downloads & install](https://yepgent.com/dl/) — current wheel, both bootstrap scripts
- [Alpha Terms](https://yepgent.com/dl/TERMS.md) — terms & acknowledgment

In the repository (private alpha): `docs/install.md` (install & uninstall),
`docs/alpha-guide.md` (gated alpha, operator + tester), `docs/user-guide.html`
(full end-user guide), `docs/positioning.md`, `docs/pricing.md`,
`docs/auth-guardrails.md`, and `PLAN.md` (the living build plan).

## Status

Private alpha — works with your own Claude Code on Windows / macOS / Linux.

---

<p align="center"><sub>Local Yep — your agent, your memory, your machine.</sub></p>
