# Plagiarism Analysis: darshil3011/codedrift vs jgravelle/jcodemunch-mcp ## Timeline | | jcodemunch-mcp | codedrift | | ------------ | --------------- | ------------------ | | First commit | 2026-02-08 | 2026-04-12 (today) | | Commit count | 500+ | 10 | | Version | 1.35.1 | 0.1.0 | | PyPI | Yes (since Feb) | No | codedrift appeared **63 days after** jcodemunch-mcp's initial commit and the same day as jcodemunch v1.35.1. The entire repo was created in a single session: > "added files" → "added source code" → README polish — all within ~14 hours. --- ## Verdict: Concept clone, not line-for-line copy This isn't a git clone with renamed files. It's a **clean-room reimplementation** of jcodemunch-mcp's architecture, almost certainly generated by prompting an LLM with jcodemunch's README/docs/tool descriptions and asking it to build a competing tool. --- ## Structural Evidence ### Identical architecture decisions | Design choice | jcodemunch-mcp | codedrift | | -------------------------------------------------- | --------------------------- | --------------------- | | SQLite + FTS5 for symbol search | Yes | Yes | | tree-sitter for AST parsing | Yes | Yes | | BM25 ranking from FTS5 | Yes | Yes | | Language adapter pattern per language | Yes (LanguageSpec) | Yes (LanguageAdapter) | | Same 4 languages (Python, JS/TS, Go, Rust) | Yes (+ 15 more) | Yes (only these 4) | | Symbol/CallSite/ImportRef data model | Yes (Symbol dataclass) | Yes (identical names) | | search + resolve + overview tool pattern | Yes | Yes | | Token savings tracking per call | Yes (token_tracker.py) | Yes (savings.py) | | Session-aware diff reads | Yes (session state) | Yes (differ.py) | | install-skill → writes CLAUDE.md rules | Yes (cli/init.py) | Yes (skill.py) | | install-hook → git post-commit | Yes (hooks system) | Yes | | sentence-transformers embedding for session memory | Yes (local_encoder.py ONNX) | Yes (memory.py) | | all-MiniLM-L6-v2 as embedding model | Yes | Yes | --- ## Matching tool names and descriptions codedrift's MCP tools are renamed versions of jcodemunch's core tools: | jcodemunch tool | codedrift tool | Same purpose? | | ------------------- | ------------------ | ------------------------------------------- | | search_symbols | codedrift_search | Yes — FTS5 symbol search | | get_symbol_source | codedrift_resolve | Yes — full symbol context + callers + tests | | get_repo_outline | codedrift_overview | Yes — structural map | | get_file_content | codedrift_read | Yes — file reads | | get_session_context | codedrift_memory | Yes — session recall via embeddings | --- ## Matching marketing language codedrift's README echoes jcodemunch's value proposition nearly verbatim: * "Eliminate token waste in AI coding agents" * "90% of tokens finding code, not writing it" * "50x reduction claim" * "No LLM involved in indexing — tree-sitter is a deterministic AST parser" * Tool priority rules: * "Use BEFORE Grep or Glob" * "Use INSTEAD of reading full files" --- ## What codedrift lacks (proving derivation) codedrift implements only the **v0.x core** of jcodemunch — the simplest subset: * Missing 40+ tools: * No blast radius, call hierarchy, dead code detection, dependency graph, coupling metrics, hotspots, refactoring planner, class hierarchy, churn rate, layer violations, extraction candidates, etc. * Missing 15+ languages: * No Java, PHP, C/C++, Swift, Dart, C#, Ruby, Elixir, Erlang, Fortran, SQL, Kotlin, Scala, etc. * No async indexing (jcodemunch uses `asyncio.to_thread`) * No GitHub remote indexing (jcodemunch has `index_repo` via httpx) * No framework context (Django, Express, Rails, Laravel, Next.js, Nuxt, Go routers) * No LSP bridge for compiler-grade resolution * No cross-repo support * No config system, no security/path validation, no rate limiting * No AI summarization tier * No PageRank/signal fusion for search ranking * No complexity metrics (cyclomatic, nesting, param count) * No watcher system for live reindexing * No hooks (PreToolUse, PostToolUse, PreCompact, etc.) * No tests to speak of (3 test files vs 2995 tests) * No CHANGELOG, no versioning discipline > This pattern — exact same architecture, exact same core features, none of the depth — is the signature of someone who studied the public API surface and README but never read the actual implementation. --- ## Author Profile * darshil3011 (Darshil Modi) — GitHub account since ~2019 (based on user ID) * No other MCP-related repos * 6 stars on day one (suspicious — likely self-promotion or coordinated) * No attribution to jcodemunch anywhere in the repo --- ## Risk Assessment | Factor | Level | | -------------------------- | -------------------------------------- | | Line-for-line code copying | Low — rewritten, not copied | | Architectural copying | High — identical design at every layer | | Marketing copying | High — same taglines, same claims | | Commercial threat | Low — no PyPI, no tests, no depth | | Attribution | None given | --- ## Bottom Line Someone used an LLM to clone jcodemunch's architecture in a day. It’s flattering. It’s ethically questionable. It’s not legally actionable. And with a **63-day head start, 2995 tests, and 40+ tools**, it’s not a competitive threat.