[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-74669":3},{"id":4,"name":5,"fullName":6,"owner":5,"repo":5,"description":7,"homepage":8,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":15,"forks30d":15,"starsTrendScore":19,"compositeScore":20,"rankGlobal":9,"rankLanguage":9,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":24,"hasPages":22,"topics":25,"createdAt":9,"pushedAt":9,"updatedAt":38,"readmeContent":39,"aiSummary":40,"trendingCount":15,"starSnapshotCount":15,"syncStatus":41,"lastSyncTime":42,"discoverSource":43},74669,"sentrux","sentrux\u002Fsentrux","Real-time architectural sensor that helps AI agents close the feedback loop, enabling recursive self-improvement of code quality. Pure Rust.","https:\u002F\u002Fsentrux.dev",null,"Rust",2431,220,14,18,0,17,30,130,51,104.03,"MIT License",false,"main",true,[26,27,28,29,30,31,32,33,34,35,36,37],"agentharness","architecture","cobol","cobol-language","code-quality","developer-tools","harnessengineering","mcp","rust","static-analysis","treemap","visualization","2026-06-12 04:01:15","\u003Cdiv align=\"center\">\n\n\u003Cpicture>\n  \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"assets\u002Flogo-dark.svg?v=2\">\n  \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"assets\u002Flogo-light.svg?v=2\">\n  \u003Cimg alt=\"sentrux\" src=\"assets\u002Flogo-dark.svg?v=2\" width=\"500\">\n\u003C\u002Fpicture>\n\n\u003Cbr>\n\n**The sensor that helps AI agents close the feedback loop.\u003Cbr>Recursive self-improvement of code quality.**\n\n\n[![CI](https:\u002F\u002Fgithub.com\u002Fsentrux\u002Fsentrux\u002Factions\u002Fworkflows\u002Fci.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fsentrux\u002Fsentrux\u002Factions\u002Fworkflows\u002Fci.yml)\n[![Release](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fv\u002Frelease\u002Fsentrux\u002Fsentrux)](https:\u002F\u002Fgithub.com\u002Fsentrux\u002Fsentrux\u002Freleases)\n[![License: MIT](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-MIT-blue.svg)](LICENSE)\n\n\n**English** | [中文](README.zh-CN.md) | [Deutsch](README.de.md) | [日本語](README.ja.md)\n\n[How it Works](#how-it-works) · [Quick Start](#quick-start) · [MCP Integration](#mcp-server) · [Rules Engine](#rules-engine) · [Releases](https:\u002F\u002Fgithub.com\u002Fsentrux\u002Fsentrux\u002Freleases)\n\n\u003C\u002Fdiv>\n\n\u003Cbr>\n\n\u003Cdiv align=\"center\">\n\n![sentrux demo](assets\u002Fdemo.gif)\n\n\u003C\u002Fdiv>\n\n\u003Cdiv align=\"center\">\n\u003Csub>Live: Claude Code Opus 4.6 builds a FastAPI project. Even with good prompts, quality lands at 6772.\u003C\u002Fsub>\n\u003Cbr>\n\u003Csub>Not because the agent can't do better — but because without a sensor, it doesn't know what to improve.\u003C\u002Fsub>\n\u003C\u002Fdiv>\n\n\u003Cdiv align=\"center\">\n\u003Cimg src=\"assets\u002Fscreenshot-health.gif\" width=\"360\" alt=\"Quality Signal\">\n\u003C\u002Fdiv>\n\n## How it works\n\n\u003Cdiv align=\"center\">\n\u003Cimg src=\"assets\u002Fhow-it-works.svg\" width=\"600\" alt=\"How sentrux works: scan → score → agent improves → rescan → better score → repeat\">\n\u003C\u002Fdiv>\n\n\n## Quick Start\n\n**Install** (macOS · Linux · Windows)\n\n**macOS**\n```bash\nbrew install sentrux\u002Ftap\u002Fsentrux\n```\n\n**Linux**\n```bash\ncurl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002Fsentrux\u002Fsentrux\u002Fmain\u002Finstall.sh | sh\n```\n\n**Windows** — download from [Releases](https:\u002F\u002Fgithub.com\u002Fsentrux\u002Fsentrux\u002Freleases), or:\n```\ncurl -L -o sentrux.exe https:\u002F\u002Fgithub.com\u002Fsentrux\u002Fsentrux\u002Freleases\u002Flatest\u002Fdownload\u002Fsentrux-windows-x86_64.exe\n```\n\nPure Rust. Single binary. No runtime dependencies. **52 languages** via tree-sitter plugins. Runs on **macOS**, **Linux**, and **Windows**.\n\n**Run it**\n\n```bash\nsentrux                    # open the GUI — live treemap of your project\nsentrux \u002Fpath\u002Fto\u002Fproject   # open GUI scanning a specific directory\nsentrux check .            # check rules (CI-friendly, exits 0 or 1)\nsentrux gate --save .      # save baseline before agent session\nsentrux gate .             # compare after — catches degradation\n```\n\n**Connect to your AI agent (optional)**\n\nGive your agent real-time access to structural health via [MCP](https:\u002F\u002Fmodelcontextprotocol.io).\n\nClaude Code:\n\n```\n\u002Fplugin marketplace add sentrux\u002Fsentrux\n\u002Fplugin install sentrux\n```\n\nCursor \u002F Windsurf \u002F OpenCode \u002F OpenClaw \u002F any MCP client — add to your MCP config:\n\n```json\n{\n  \"mcpServers\": {\n    \"sentrux\": {\n      \"command\": \"sentrux\",\n      \"args\": [\"--mcp\"]\n    }\n  }\n}\n```\n\n**From source \u002F upgrade \u002F troubleshooting**\n\n```bash\n# Build from source\ngit clone https:\u002F\u002Fgithub.com\u002Fsentrux\u002Fsentrux.git\ncd sentrux && cargo build --release\n\n# Upgrade\nbrew update && brew upgrade sentrux\n# or re-run the curl install — it always pulls the latest release\n```\n\n**Linux GPU issues?** If the app won't start, sentrux automatically tries multiple GPU backends (Vulkan → GL → fallback). You can also force one:\n\n```bash\nWGPU_BACKEND=vulkan sentrux    # force Vulkan\nWGPU_BACKEND=gl sentrux        # force OpenGL\n```\n\n\u003Cbr>\n\n## The problem nobody talks about\n\nYou start a project with Claude Code or Cursor. Day one is magic. The agent writes clean code, understands your intent, ships features fast.\n\nThen something shifts.\n\nThe agent starts hallucinating functions that don't exist. It puts new code in the wrong place. It introduces bugs in files it touched yesterday. You ask for a simple feature and it breaks three other things. You're spending more time fixing the agent's output than writing it yourself.\n\nEveryone assumes the AI got worse. **It didn't.** Your codebase did.\n\nHere's what actually happened: when you used an IDE, you saw the file tree. You opened files. You built a mental model of the architecture — which module does what, how they connect, where things belong. You were the governor. Every edit passed through your understanding of the whole.\n\nThen AI agents moved us to the terminal. The agent modifies dozens of files per session. You see a stream of `Modified src\u002Ffoo.rs` — but you've lost the spatial awareness. You don't see where that file sits in the dependency graph. You don't see that it just created a cycle. You don't see that three modules now depend on a file that was supposed to be internal. Many developers let AI agents build entire applications without ever opening the file browser.\n\n**You've lost control. And you don't even know it yet.**\n\nEvery AI session silently degrades your architecture. Same function names, different purposes, scattered across files. Unrelated code dumped in the same folder. Dependencies tangling into spaghetti. When the agent searches your project, it finds twenty conflicting matches — and picks the wrong one. Every session makes the mess worse. Every mess makes the next session harder.\n\nThis is the dirty secret of AI-assisted development: **the better the AI generates code, the faster your codebase becomes ungovernable.**\n\nThe traditional answer — *\"plan your architecture first, then let AI implement\"* — sounds right but misses the point. Tools like GitHub's [Spec Kit](https:\u002F\u002Fgithub.com\u002Fgithub\u002Fspec-kit) try this approach: generate detailed specs and plans before writing code. But in practice, it [reinvents waterfall](https:\u002F\u002Fblog.scottlogic.com\u002F2025\u002F11\u002F26\u002Fputting-spec-kit-through-its-paces-radical-idea-or-reinvented-waterfall.html) — producing seas of markdown documents while having zero visibility into the code that actually gets produced. No feedback loop. No way to detect when the implementation drifts from the spec. No structural analysis of any kind. The spec goes in, the agent writes code, and nobody checks what came out.\n\nThat's not how anyone actually works with AI agents anyway. You prototype fast. You iterate through conversation. You follow inspiration. You let the creative flow drive the code. That creative flow is exactly what makes AI agents powerful. And it's exactly what destroys codebases.\n\n**You don't need a better plan. You need a better sensor.**\n\n## The solution\n\n**sentrux is the missing feedback loop.**\n\nEvery system that works at scale has one: a sensor that observes reality, a spec that defines \"good,\" and an actuator that corrects drift. Compilers close a feedback loop on syntax. Test suites close a loop on behavior. Linters close a loop on style.\n\nBut architecture — does this change fit the system? will this abstraction cause problems as the codebase grows? — had no sensor and no actuator. Only humans could judge that. And humans can't keep up with machine-speed code generation.\n\n**sentrux closes the loop at the architecture level.**\n\nIt watches your codebase in real-time — not the diffs, not the terminal output — the *actual structure*. Every file. Every dependency. Every architectural relationship. Visualized as a live interactive treemap that updates as the agent writes code.\n\n5 root cause metrics. One continuous score. Computed in milliseconds.\n\nWhen architecture degrades, you see it immediately — not two weeks later when everything is broken and nobody remembers which session caused it.\n\nsentrux gives you the sensor. Your rules give you the spec. The agent is the actuator. **The loop closes.**\n\n\u003Cbr>\n\n\u003Cdiv align=\"center\">\n\u003Ctable>\n\u003Ctr>\n\u003Ctd align=\"center\" width=\"33%\">\u003Cb>Visualize\u003C\u002Fb>\u003Cbr>\u003Csub>Live treemap with dependency edges,\u003Cbr>files glow when the agent modifies them\u003C\u002Fsub>\u003C\u002Ftd>\n\u003Ctd align=\"center\" width=\"33%\">\u003Cb>Measure\u003C\u002Fb>\u003Cbr>\u003Csub>5 root cause metrics, one score 0–10000:\u003Cbr>modularity, acyclicity, depth, equality, redundancy\u003C\u002Fsub>\u003C\u002Ftd>\n\u003Ctd align=\"center\" width=\"33%\">\u003Cb>Govern\u003C\u002Fb>\u003Cbr>\u003Csub>Quality gate catches regression.\u003Cbr>Rules engine enforces constraints.\u003C\u002Fsub>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftable>\n\u003C\u002Fdiv>\n\n\u003Cbr>\n\n## MCP server\n\n**Agent workflow**\n\n```\nAgent: scan(\"\u002FUsers\u002Fme\u002Fmyproject\")\n  → { quality_signal: 7342, files: 139, bottleneck: \"modularity\" }\n\nAgent: session_start()\n  → { status: \"Baseline saved\", quality_signal: 7342 }\n\n  ... agent writes 500 lines of code ...\n\nAgent: session_end()\n  → { pass: false, signal_before: 7342, signal_after: 6891,\n      summary: \"Quality degraded during this session\" }\n```\n\n9 tools: `scan` · `health` · `session_start` · `session_end` · `rescan` · `check_rules` · `evolution` · `dsm` · `test_gaps`\n\n## Rules engine\n\nDefine architectural constraints. Enforce them in CI. Let the agent know the boundaries.\n\n**Example `.sentrux\u002Frules.toml`**\n\n```toml\n[constraints]\nmax_cycles = 0\nmax_coupling = \"B\"\nmax_cc = 25\nno_god_files = true\n\n[[layers]]\nname = \"core\"\npaths = [\"src\u002Fcore\u002F*\"]\norder = 0\n\n[[layers]]\nname = \"app\"\npaths = [\"src\u002Fapp\u002F*\"]\norder = 2\n\n[[boundaries]]\nfrom = \"src\u002Fapp\u002F*\"\nto = \"src\u002Fcore\u002Finternal\u002F*\"\nreason = \"App must not depend on core internals\"\n```\n\n```bash\nsentrux check .\n# ✓ All rules pass — Quality: 7342\n```\n\n## Supported languages\n\n**52 languages** built-in via [tree-sitter](https:\u002F\u002Ftree-sitter.github.io\u002F) plugins — zero language knowledge in the binary:\n\n| | | | | | |\n|---|---|---|---|---|---|\n| Bash | C | C++ | C# | Clojure | COBOL |\n| Crystal | CSS | Dart | Dockerfile | Elixir | Erlang |\n| F# | GDScript | GLSL | Go | Groovy | Haskell |\n| HCL | HTML | Java | JavaScript | JSON | Julia |\n| Kotlin | Lua | Markdown | Nim | Nix | Objective-C |\n| Object Pascal | OCaml | Perl | PHP | PowerShell | Protobuf |\n| Python | R | Ruby | Rust | Scala | SCSS |\n| Solidity | SQL | Svelte | Swift | TOML | TypeScript |\n| V | Vue | YAML | Zig | | |\n\n**Plugin system** — add any language, or create your own:\n\n```bash\nsentrux plugin list              # see installed plugins\nsentrux plugin add \u003Cname>        # install from registry\nsentrux plugin add-standard      # install all 52 languages\nsentrux plugin init my-lang      # scaffold a new language plugin\n```\n\nArchitecture: the binary is a **generic platform** — all language knowledge lives in `plugin.toml` + `tags.scm` query files. Adding a new language requires zero Rust code.\n\nMissing a language? [Open an issue](https:\u002F\u002Fgithub.com\u002Fsentrux\u002Fsentrux\u002Fissues) or add a plugin to [`plugins\u002F`](plugins\u002F).\n\n---\n\n## Philosophy\n\n**The human role is changing — from writing code to governing code.**\n\nEvery engineering practice that mattered before AI — documentation, testing, codified architecture, fast feedback loops — now matters exponentially more. Skip the tests and the feedback loop can't close. Skip the architectural constraints and drift compounds at machine speed. And here's the trap: you can't use agents to clean up the mess if the agents don't know what clean looks like.\n\nsentrux is built on three beliefs:\n\n**1. Human-in-the-loop is non-negotiable.** AI agents are powerful but limited. They cannot hold the big picture and the small details at the same time. A human must be able to see, at any moment, what the agent is doing to the whole — not just which file it touched, but what that file means to the architecture. sentrux makes that possible.\n\n**2. Verification is more valuable than generation.** Generating a correct solution is harder than verifying one (the intuition behind P vs NP). You don't need to out-code the machine. You need to out-evaluate it — specify what \"correct\" looks like, recognize when the output misses, judge whether the direction is right. sentrux turns architectural judgment into machine-readable grades and constraints.\n\n**3. Good systems make good outcomes inevitable.** A well-designed system constrains behavior so that the right thing is the easy thing. A quality gate that blocks degradation before it ships. A rules engine that encodes your architectural decisions. A visual map that makes structural rot impossible to ignore. The practices haven't changed. The penalty for ignoring them has become unbearable.\n\n*Once you have a feedback loop that works, you don't go back to doing it by hand. Not because you can't. Because it no longer makes sense.*\n\n---\n\n\u003Cdiv align=\"center\">\n\n\u003Csub>AI agents write code at machine speed. Without structural governance, codebases decay at machine speed too.\u003Cbr>\u003Cb>sentrux is the governor.\u003C\u002Fb>\u003C\u002Fsub>\n\n\u003C\u002Fdiv>\n\n\u003Cdiv align=\"center\">\n\n[MIT License](LICENSE)\n\n\u003C\u002Fdiv>\n","sentrux是一个使用Rust语言开发的实时架构传感器，旨在帮助AI代理通过闭环反馈机制递归地自我改进代码质量。其核心功能包括静态代码分析、质量评分以及通过树状图可视化项目结构健康状况，支持52种编程语言，并且无需额外运行时依赖。特别适用于软件开发过程中持续集成\u002F持续部署（CI\u002FCD）场景下提高代码质量和维护性的需求，同时也为那些希望利用AI辅助进行代码优化和重构的开发者提供了强有力的支持。",2,"2026-06-11 03:50:20","high_star"]