
Company News
AWS Security Hub Adds Socket for Supply Chain Security
Socket is now in the AWS Security Hub Extended plan. Adopt it through AWS, apply committed spend, and block malicious open source packages.
lenspr
Advanced tools
Code intelligence for AI coding agents. Your AI sees dependencies before making changes.
Alpha (0.1.x) — works on real projects, used daily by the author. Expect rough edges.
AI assistants edit your code one file at a time. They don't see dependencies. They grep, read, guess — and break things three files away.
LensPR builds a dependency graph of your codebase and gives your AI structural understanding before it changes anything.
Requires Python 3.11+, macOS or Linux. For TypeScript/JS projects, also Node.js 18+.
pip install 'lenspr[all]'
lenspr init .
lenspr setup .
Restart your IDE. Done. Your AI now has lens_* tools.
Add
.lens/to your.gitignore— the graph is local and rebuilt from source.
One call returns source code, who calls it, what it calls, and related tests:
> lens_context("auth.login_handler")
source: 42 lines
callers: auth_routes.create_routes, test_auth.test_login_success
callees: db.get_user, crypto.verify_password, jwt.create_token
tests: test_login_success, test_login_wrong_password
Without LensPR your AI makes 5-7 grep/read calls and still misses things. With LensPR — one call, full picture.
Before any modification, the AI sees the blast radius:
> lens_check_impact("models.User")
severity: CRITICAL
direct_dependents: 15
indirect_dependents: 23
affected_modules: auth, payments, notifications
tests_covering: 3
The AI warns you, changes its approach, or asks for confirmation. No more blind edits.
> lens_vibecheck()
score: 86/100 (B)
test_coverage: 17/25 — 67% functions tested
dead_code: 20/20 — 0% dead code
circular_imports: 15/15 — 0 cycles
architecture: 12/15 — 1 violation
documentation: 8/10 — 81% documented
graph_confidence: 14/15 — 94% edges resolved
Track whether the codebase is improving or degrading over time.
LensPR connects frontend and backend into a single graph:
LoginModal.tsx → fetch("/api/auth/login")
↓ CALLS_API
Backend: @router.post("/login") → login_handler()
→ db.query(User) [reads: users]
→ verify_password()
→ create_jwt_token()
Also tracks: database tables, Docker services, env vars, CI/CD workflows, SQL migrations.
| IDE | Setup |
|---|---|
| Claude Code | lenspr setup . — automatic |
| Cursor | Copy .mcp.json to .cursor/mcp.json |
| Any MCP client | lenspr serve <path> |
Languages: Python (95%+ resolution via Jedi/Pyright) and TypeScript/JavaScript (85-95% via tree-sitter + TS Compiler API).
Infrastructure: .sql files, Dockerfiles, docker-compose.yml, GitHub Actions workflows, .env files — all parsed into the same graph.
Everything runs locally. Your code never leaves your machine.
| Impact Analysis | Severity (LOW → CRITICAL) before any change |
| One-Call Context | Source + callers + callees + tests in one request |
| Cross-Language | Frontend HTTP → backend routes, DB tables, Docker, env vars, CI/CD |
| Surgical Edits | Targeted find/replace within a function — no full file rewrites |
| Dead Code | Find unreachable functions (Django, FastAPI, Celery entry points) |
| Architecture Rules | Enforce layer boundaries — violations warn before changes apply |
| Git per Function | Blame, history, commit scope at function level |
| Session Memory | AI picks up where it left off across context resets |
| Auto-Sync | File watcher updates graph on every save |
| Health Score | 0-100 score across 6 dimensions — track quality over time |
60+ tools organized in 12 groups — enable only what you need with lenspr tools.
Navigation & Search (8): lens_context, lens_get_node, lens_search, lens_grep, lens_find_usages, lens_get_structure, lens_list_nodes, lens_get_connections
Modification (6): lens_update_node, lens_patch_node, lens_add_node, lens_delete_node, lens_rename, lens_batch
Analysis (6): lens_check_impact, lens_validate_change, lens_health, lens_dead_code, lens_dependencies, lens_diff
Quality (7): lens_vibecheck, lens_nfr_check, lens_test_coverage, lens_security_scan, lens_dep_audit, lens_fix_plan, lens_generate_test_skeleton
Architecture (9): lens_arch_rule_add, lens_arch_rule_list, lens_arch_rule_delete, lens_arch_check, lens_class_metrics, lens_project_metrics, lens_largest_classes, lens_compare_classes, lens_components
Git (4): lens_blame, lens_node_history, lens_commit_scope, lens_recent_changes
Infrastructure (5): lens_api_map, lens_db_map, lens_env_map, lens_ffi_map, lens_infra_map
Testing & Tracing (3): lens_run_tests, lens_trace, lens_trace_stats
Annotations (5): lens_annotate, lens_save_annotation, lens_batch_save_annotations, lens_annotate_batch, lens_annotation_stats
Session (4): lens_session_write, lens_session_read, lens_session_handoff, lens_resume
Temporal (2): lens_hotspots, lens_node_timeline
Explanation (1): lens_explain
self.method() calls — static parser can't fully resolve instance method dispatch. Workaround: lens_trace (Python 3.12+) resolves these at runtime.getattr, eval, dynamic imports can't be tracked statically.Try it. If it breaks, tell me.
MIT
Built because AI kept breaking my code.
FAQs
Code-as-graph for safe LLM-assisted development
The pypi package lenspr receives a total of 25 weekly downloads. As such, lenspr popularity was classified as not popular.
We found that lenspr demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Company News
Socket is now in the AWS Security Hub Extended plan. Adopt it through AWS, apply committed spend, and block malicious open source packages.

Research
/Security News
Popular npm packages keyv and cacheable compromised.

Security News
A misconfiguration gave three Anthropic models internet access, and one, believing it was in a simulation, shipped a credential-stealing package to PyPI.