isA Orch
Unified code index and platform intelligence for the isA ecosystem.
Overview
isA Orch provides cross-project code intelligence — a single index spanning all 19 isA sub-projects with symbol resolution, call-graph analysis, full-text search, and semantic search. It is the shared intelligence substrate that skills and isa-vibe use for impact analysis, context detection, and TDD routing.
| Feature | Detail |
|---|---|
| Index | All 19 isA projects in one SQLite database |
| Search | FTS5 full-text + optional semantic embeddings |
| Impact | Cross-project call-graph analysis (recursive CTE) |
| Languages | Python (AST), TypeScript/JavaScript (tree-sitter) |
| Tests | 294 tests across unit/component/integration |
Quick Start
# Install
cd isA_Orch
pip install -e .
# Index all projects
isa-orch index
# Search across the platform
isa-orch search "ToolNode"
# Impact analysis
isa-orch impact "isa_agent_sdk.nodes.tool_node.ToolNode"
# Platform stats
isa-orch statsArchitecture
config/projects.yaml (19 projects)
│
ProjectRegistry
│
Indexer ────→ PythonAST / TreeSitter / Classifier
│
PlatformIndex (SQLite + FTS5)
│
LocalEmbeddingIndex (optional, sentence-transformers)Database: ~/Documents/Fun/isA/.isa/code_index.db
The architecture has three layers:
- Registry —
config/projects.yamldeclares every sub-project with its path, language, and GitHub remote. TheProjectRegistryloads this file and resolves paths relative to the platform root. - Indexer — Walks each project, parses source files with the appropriate parser (Python
astfor.py, tree-sitter for.ts/.js), extracts symbols (functions, classes, methods, variables), and records edges (calls, imports, inheritance). - Index — A single SQLite database with FTS5 full-text search and optional vector embeddings for semantic queries. All symbols carry a
projecttag enabling scoped and cross-project queries.
Core Features
Code Index (Tree-Sitter and AST Parsing)
The indexer extracts a complete symbol table from every source file in the platform. Each symbol record includes the qualified name, kind (function, class, method, variable), file path, line range, docstring, and project tag.
Python files are parsed with the built-in ast module, extracting:
- Functions and async functions (top-level and nested)
- Classes and their methods
- Module-level variables and constants
- Import relationships and call edges
TypeScript and JavaScript files are parsed with tree-sitter , extracting:
- Named and default exports
- Function declarations and arrow functions
- Class declarations with methods and properties
- Interface and type alias definitions
- Import statements and call expressions
The indexer is incremental — it checksums every file and only re-parses files that have changed since the last run, making re-indexing fast even across the full platform.
# Full index of all projects
isa-orch index
# Index a single project
isa-orch index --project isA_MCP
# Force full re-index (ignore checksums)
isa-orch index --full
# Index with semantic embeddings
isa-orch index --embeddingsSemantic Embedding Index
When the --embeddings flag is passed during indexing, isA Orch generates vector embeddings for every symbol using sentence-transformers . This enables semantic search — finding symbols by meaning rather than exact text match.
The embedding index uses a local model (no external API calls), so it works fully offline. Embeddings are stored alongside the FTS5 index in the same SQLite database.
Use cases for semantic search:
- Finding symbols related to a concept (“retry logic”, “error handling”, “authentication”)
- Discovering similar implementations across projects
- Locating code relevant to a natural-language description
# Index with embeddings (first time takes longer)
isa-orch index --embeddings
# Semantic search
isa-orch search "retry logic for failed tool calls" --semantic
# Combine semantic search with project scope
isa-orch search "authentication middleware" --semantic --project isA_CloudCross-Project Symbol Search and Resolution
All symbols carry a project tag, enabling both scoped and platform-wide queries. The search engine supports three modes:
Full-text search (default) — Uses SQLite FTS5 for fast substring and token matching:
# Search across all projects
isa-orch search "tool_node"
# Search within a specific project
isa-orch search "tool_node" --project isA_Agent_SDK
# Filter by symbol kind
isa-orch search "ToolNode" --kind class
# JSON output for machine consumption
isa-orch search "ToolNode" --jsonSemantic search — Uses vector embeddings for meaning-based queries:
isa-orch search "retry logic" --semanticSymbol resolution — Given a short name, resolves it to all matching qualified names across the platform:
# Find all definitions of "ToolNode" across all projects
isa-orch search "ToolNode" --kind class
# Results show project, qualified name, file, and line range
# isA_Agent_SDK isa_agent_sdk.nodes.tool_node.ToolNode src/nodes/tool_node.py 42-128
# isA_Agent isa_agent.tools.ToolNode src/tools.py 15-67Impact Analysis
The impact analysis engine traces the call graph of any symbol recursively across project boundaries. Given a symbol name, it returns every caller — direct and transitive — so you can understand the blast radius of a change before making it.
The algorithm uses a 3-pass edge resolution strategy:
- Exact qualified name match — e.g.,
isa_agent_sdk.nodes.tool_node.ToolNode - Short name match within the same project — resolves unqualified references within a project
- Short name match across all projects — catches cross-project usage via re-exports or dynamic imports
# Basic impact analysis
isa-orch impact "ToolNode"
# With depth control (default is unlimited)
isa-orch impact "ToolNode" --max-depth 3
# Scoped to a project
isa-orch impact "ToolNode" --project isA_Agent_SDK
# JSON output for programmatic use
isa-orch impact "isa_agent_sdk.nodes.tool_node.ToolNode" --jsonExample output:
Impact analysis for: ToolNode (max-depth: 3)
Direct callers (depth 1):
isA_Agent_SDK AgentGraph.build() src/graph.py:87
isA_Agent PlannerAgent._run_tools() src/agents/planner.py:145
Transitive callers (depth 2):
isA_Agent AgentRunner.execute() src/runner.py:34
isA_Console CLIHandler.handle_command() src/cli/handler.ts:78
Transitive callers (depth 3):
isA_Console main() src/index.ts:12
Total: 5 callers across 3 projectsPlatform Statistics
Get a high-level view of the index — total symbols, edges, projects, and language breakdown:
# Platform-wide stats
isa-orch stats
# Stats for a single project
isa-orch stats --project isA_Agent_SDK
# JSON output
isa-orch stats --jsonProject Context Detection
Auto-detects language, framework, test runner, and infrastructure for any project directory:
isa-orch project-context ./isA_Agent_SDKThis is used internally by skills like /test and /codegen to adapt their output to the target project’s stack.
Test Scaffold
Creates the 5-layer test directory structure used by the isA TDD workflow:
isa-orch test-scaffold ./isA_Agent_SDK
# Creates: tests/{unit,component,integration,api,smoke}/CLI Reference
| Command | Description | Key Flags |
|---|---|---|
isa-orch index | Index all or selected projects | --project, --full, --embeddings |
isa-orch search <query> | Full-text or semantic search | --semantic, --kind, --project, --json |
isa-orch impact <symbol> | Cross-project impact analysis | --max-depth, --project, --json |
isa-orch stats | Platform-wide index statistics | --project, --json |
isa-orch projects | List all registered projects | --json |
isa-orch project-context <path> | Detect project language/framework/infra | --json |
isa-orch test-scaffold <path> | Create 5-layer test directory structure | — |
All commands support --json for machine-readable output.
Project Registry
Projects are declared in config/projects.yaml. The registry currently tracks 19 sub-projects:
platform_root: ~/Documents/Fun/isA
projects:
- name: isA_Agent_SDK
description: Core agent framework with LangGraph nodes
language: python
github: xenoISA/isA_Agent_SDK
- name: isA_MCP
description: Tool server with 190+ tools
language: python
github: xenoISA/isA_MCP
- name: isA_Console
description: Console/UI interfaces
language: typescript
github: xenoISA/isA_Console
# ... 16 more projectsEach entry specifies the project name, description, primary language, and GitHub remote. The registry is the single source of truth for which projects exist in the platform and is consumed by the indexer, search engine, and CLI.
How Skills Use isA Orch
isA Orch is not just a standalone tool — it provides the intelligence layer that other skills and pipelines depend on:
| Skill / Pipeline | How It Uses Orch |
|---|---|
/investigate | Searches the index to find relevant code across all projects |
/design | Uses impact analysis to assess blast radius of proposed changes |
/fix-issue | Locates the symbol to fix and checks for cross-project callers |
/test | Uses project-context detection to pick the right test framework |
/cleanup | Finds unused symbols by checking for zero callers in the index |
/refactor | Uses impact analysis to find all references before renaming |
isa-vibe | Queries the index during CDD and TDD phases for context |
Tech Stack
| Layer | Technology |
|---|---|
| Language | Python 3.11+ |
| Storage | SQLite with FTS5 |
| Python parsing | Built-in ast module |
| JS/TS parsing | tree-sitter (optional) |
| Embeddings | sentence-transformers (optional) |
| CLI | setuptools entry point |
Related
- Architecture — Platform overview
- Agent SDK — Core agent framework
- Cloud — Deployment infrastructure