{
  "markdown": "<p align=\"center\">\n  <a href=\"https://github.com/Lians-ai/Lians\">\n    <img src=\"docs/assets/lians-lotus.svg\" width=\"190\" alt=\"Lians lotus\">\n  </a>\n</p>\n\n<p align=\"center\"><strong>Recover the task. Reject stale state. Block unsupported done.</strong></p>\n\n<p align=\"center\">\n  <a href=\"docs/quickstart.md\"><strong>Quickstart</strong></a> ·\n  <a href=\"docs/why-lians.md\">Why Lians</a> ·\n  <a href=\"docs/benchmarks/continuitybench-v0.1.md\">ContinuityBench</a> ·\n  <a href=\"docs/install.md\">Install</a> ·\n  <a href=\"docs/\">Docs</a> ·\n  <a href=\"https://github.com/Lians-ai/Lians/issues\">Issues</a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://pypi.org/project/lians-sdk\"><img src=\"https://img.shields.io/pypi/v/lians-sdk?label=PyPI\" alt=\"PyPI version\"></a>\n  <a href=\"https://www.npmjs.com/package/@lians-ai/lians\"><img src=\"https://img.shields.io/npm/v/%40lians-ai%2Flians?label=npm\" alt=\"npm version\"></a>\n  <a href=\"https://registry.modelcontextprotocol.io/?q=io.github.ebeirne%2Flians\"><img src=\"https://img.shields.io/badge/MCP-Official%20Registry-blueviolet\" alt=\"MCP Official Registry\"></a>\n  <a href=\"LICENSE\"><img src=\"https://img.shields.io/badge/License-Apache%202.0-blue.svg\" alt=\"Apache 2.0 license\"></a>\n</p>\n\n## Lians Guard\n\n**The current-state and completion guard for AI coding agents.**\n\nLians recovers interrupted agent work, rejects stale task state, and blocks\n`done` until the current task is ready for human review.\n\n> Your agent can forget the chat. It cannot forget what is finished, what\n> changed, or what still has to pass.\n\n- **Recover.** Resume a bounded current task across supported Claude Code and\n  Codex sessions.\n- **Reject stale state.** Bind checkpoints to current repository and task state\n  so old evidence is not silently reused.\n- **Guard completion.** Separate measured evidence from an agent's own claims\n  and keep the gate closed while work is missing, unknown, failed, or blocked.\n- **Require review.** `READY FOR HUMAN REVIEW` is a handoff to a person, never a\n  claim that the work is correct, approved, or safe to deploy.\n- **Stay local.** The free recovery path needs no Lians account, AI password, or\n  provider API key.\n\nLians works with your existing AI account and editor. It does not replace your\nmodel, Git, CI, repository instructions, or human review.\n\n## One clear result after every agent session\n\n```text\nRECOVERED\nTask: Fix OAuth callback handling\nNext: Re-run the callback integration test\n\nSTALE\nReason: The authentication requirement changed after this checkpoint\n\nBLOCKED\nMissing: OAuth callback integration test\nUntrusted: \"tests passed\" was reported by the agent, not measured\n\nREADY FOR HUMAN REVIEW\nMeasured locally: callback tests passed\nMeasured by CI: required checks passed\n```\n\nThe trust model is deliberately strict. `measured_local`, `measured_ci`, and\n`human_confirmed` evidence can satisfy a criterion. `agent_attested` and\n`inferred_activity` records remain useful context but cannot open the review\ngate. An agent cannot promote its own checkpoint into a trusted class. Trusted\nCI evidence requires an exact GitHub attestation and commit match plus an\ninteractive check-to-criterion mapping; human evidence requires interactive\nconfirmation. Read [why Lians exists](docs/why-lians.md), the full\n[Lians Guard product contract](docs/lians-guard.md), and the current [market\npressure test](docs/market-pressure-test-2026-08.md).\n\n## Try it in two minutes\n\nChoose the AI tool you already use:\n\n| Tool | Fastest setup |\n|---|---|\n| Codex app, CLI, or IDE | [One command](integrations/codex) |\n| Claude Code | [Two plugin commands](integrations/lians-plugin) |\n| Cursor | [One-click MCP install](integrations/cursor) |\n| Other MCP clients | [Minimal MCP setup](docs/install.md#existing-ai-client-use-mcp) |\n\nFor example, after [installing `uv`](https://docs.astral.sh/uv/getting-started/installation/), connect Codex with:\n\n```bash\ncodex mcp add lians --env LIANS_MCP_ENABLED_TOOLS=remember,recall,list_memories,correct_memory,forget_memory -- uvx --from \"lians-sdk[mcp]\" lians-mcp\n```\n\nRestart Codex, then save one safe project fact and recover it in a fresh chat.\nLocal memory is stored in `~/.lians/mcp.db` by default. This is the available\nfree recovery path; the full Guard workflow is currently a developer preview.\n\n[Follow the complete quickstart](docs/quickstart.md) for setup, recovery,\ncorrection, deletion, and the Guard preview boundary.\n\n## What a fresh coding agent receives\n\nLians can generate a bounded project handoff instead of replaying a transcript:\n\n```text\nReported complete; verify:\n- migrated the orders API to /v2/orders\n\nStill open:\n- verify the migration against current Git state\n- update documentation\n\nDecisions:\n- keep pytest\n\nChanged:\n- /v1/orders is stale; use /v2/orders\n\nNext:\n- update documentation before touching unrelated UI\n```\n\nThe handoff is derived from current Lians state, not a manually maintained\nsummary. Agent-reported work remains visible without being mislabeled as\nverified completion.\n\n## Why this is not another generic memory layer\n\nNative memories are convenient when work stays inside one product. General\nmemory is no longer a scarce category. Lians uses local memory for recovery,\nthen focuses on the expensive gap: current task state and evidence-backed\nreadiness.\n\nThe [current competitive landscape](docs/competitive-landscape.md) pressure\ntests this position against native Claude Code, Codex, Cursor, GitHub Copilot,\nEntire, Factory, and AI review workflows.\n\n| Approach | Best fit | Boundary |\n|---|---|---|\n| Native tool memory | One AI tool, minimal setup | Usually stays inside that vendor |\n| `AGENTS.md` or `CLAUDE.md` | Stable repository instructions | Must be maintained manually |\n| Transcript replay | Reconstructing one conversation | Large, noisy, and may revive stale decisions |\n| Free Lians recovery | Resume current project context across supported tools | Requires a local connection to each tool |\n| Lians Guard | Detect stale state and gate readiness with typed evidence | Team workflow is still in developer preview |\n\nLians is not claiming that every project needs a separate memory layer. See the\n[honest comparison and decision guide](docs/why-lians.md).\n\n## Project status\n\nLians is under active development. Available recovery features and preview Guard\nfeatures are separated here so the repository does not imply a production\nguarantee that does not exist yet.\n\n| Capability | Status |\n|---|---|\n| Local memory through MCP and Python | Available |\n| Codex, Claude Code, and Cursor local recovery setup | Available |\n| Inspect, correct, and confirmed permanent deletion | Available |\n| Bounded context and signed selection receipts | Available |\n| Automatic Claude-to-Codex project handoff | Beta |\n| Typed evidence and evidence-backed task gate | Developer preview |\n| Local Git workspace fingerprint on checkpoints | Developer preview |\n| Automatic stale evidence invalidation | In development |\n| Attested GitHub Actions evidence intake | Developer preview |\n| Local Guard reporting | Developer preview |\n| Shared team queue | Planned |\n| Cross-platform clean-install CI | Required by the new Guard workflow; first hosted run pending |\n| Guided desktop installer and local control center | Release candidate |\n\nThe macOS and Windows desktop builds remain release candidates pending platform\nsigning and notarization. See the [desktop preview boundary](docs/easy-install.md).\n\n## Current evidence\n\nThe included Claude-to-Codex continuity fixture recovered **10/10 expected\nfacts**, exposed **0 stale facts as current**, and produced a **231-token\nhandoff**. These are bounded beta results, not a promise that every live coding\nsession extracts perfectly. [Run the experiment](experiments/cross-agent-continuity/README.md).\n\nThe developing [ContinuityBench v0.1](docs/benchmarks/continuitybench-v0.1.md)\npublishes the proposed cross-agent, freshness, correction, erasure, provenance,\nand boundedness test contract. Its current Lians fixture is evidence for that\nfixture only; it is not presented as a completed competitor leaderboard.\n\nA separate live test saved a synthetic project fact through Cursor, recalled it\nin a new Cursor chat and a fresh Claude Code session, and confirmed it was gone\nafter deletion. [Read the test method](docs/benchmarks/cross-agent-memory-2026-08-14.md).\n\nThe Guard correctness benchmark exercises missing evidence, unknown criteria,\nfailed constraints, blockers, stale updates, and drift signals. It is a local,\ndeterministic test of the configured policy, not proof of semantic correctness\nor a production outcome. Run `packages/lians-easy/benchmarks/task_contract_correctness.py`\nto inspect the cases.\n\n## Build with Lians\n\nUse the local Python SDK inside an application:\n\n```bash\npip install \"lians-sdk[local]\"\n```\n\n```python\nfrom datetime import datetime, timezone\nfrom lians import LocalLiansClient\n\nmemory = LocalLiansClient(db_path=\".lians/memory.db\")\nmemory.add(\n    agent_id=\"my-agent\",\n    content=\"The project uses Python 3.12 and pytest.\",\n    event_time=datetime.now(timezone.utc),\n)\n\nresult = memory.recall(\n    agent_id=\"my-agent\",\n    query=\"Which Python version and test runner should I use?\",\n)\n```\n\nSee the [install guide](docs/install.md) for TypeScript, Go, Java, C, framework\nintegrations, and self-hosting.\n\nRunning a class, club, hackathon, or campus developer group? Use the\n[student and community kit](docs/student-community-kit.md). Contributors and\npackage integrators can start with\n[Supported paths and repository status](docs/supported-paths.md).\n\n<details>\n<summary><strong>Advanced capabilities</strong></summary>\n\nLians also includes tools for project-scoped agent handoffs, signed selection\nand review receipts, local research and browser briefs, temporal reconstruction,\nlineage, information barriers, confirmed erasure, and bounded formal checks.\nThese capabilities are useful for advanced or governed deployments but are not\nrequired for the starter memory workflow.\n\n- [Memory engine](docs/memory-engine.md)\n- [Cross-agent continuity experiment](experiments/cross-agent-continuity/README.md)\n- [Agent-work verification](docs/formal-verification.md)\n- [Security model](docs/security-whitepaper.md)\n- [Community and managed product boundary](docs/community-cloud-boundary.md)\n- [Supported paths and repository status](docs/supported-paths.md)\n\n</details>\n\n## Development\n\n```bash\ngit clone https://github.com/Lians-ai/Lians.git\ncd Lians\npython -m pip install -e \".[dev]\"\npython scripts/test_all.py\n```\n\nRead [CONTRIBUTING.md](CONTRIBUTING.md) before opening a pull request. Feature\nideas, integration requests, and reproducible bugs are welcome in\n[GitHub Issues](https://github.com/Lians-ai/Lians/issues).\n\nIf Lians helps your workflow, [star the repository](https://github.com/Lians-ai/Lians/stargazers)\nso other AI-tool users can find it.\n\n## License\n\nApache 2.0. See [LICENSE](LICENSE).\n\n<!-- mcp-name: io.github.ebeirne/lians -->\n",
  "bytes": 10967,
  "sha": "1c5eef16f36a0da20d50da535996d1e12204c1539abce66d3d85875844f25e8f",
  "repo_slug": "lians-ai/lians",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_lians_ai_lians_e3a73b10/readme"
}