Infrawise

io.github.Sidd27由 GitHub 帳號 Sidd27 發布v1.0.0更新於 Oct 24, 2026

Live AWS, database & Kafka infrastructure context for AI coding assistants via MCP.

概覽

AI 產生的概覽

Infrawise 掃描你的 AWS、資料庫與程式碼庫基礎設施,並透過 MCP 向 AI 程式助理提供唯讀的基礎設施脈絡。

可以做什麼
  • 讀取基礎設施總覽、圖譜摘要與各資料來源健康狀態
  • 檢視資料表結構,並為 DynamoDB、PostgreSQL、MySQL、MongoDB 提供索引建議
  • 分析函式中的全表掃描、缺少索引、N+1 查詢與缺少 IAM 權限
  • 檢視 AWS 資源:Lambda、SQS、SNS、EventBridge、API Gateway、S3、Kinesis/MSK、ElastiCache、CloudFront、RDS、Cognito
  • 列出 Secrets Manager 與 SSM 參數名稱,以及 CloudWatch 日誌群的保留期中介資料
  • 讀取本機 Terraform、CloudFormation、CDK 檔案中的堆疊輸出與跨堆疊匯出
適用情境
當助理需要針對真實的 AWS 與資料庫基礎設施撰寫或審查程式碼,且需要準確的資料表結構、鍵、索引與查詢模式而非憑空猜測時適用。適合希望在寫程式或 CI 流程中取得確定性的掃描、缺少索引與熱分割區發現結果的團隊。
執行需求
本機需 Node.js 22 或更新版本,透過 npm 或 npx 執行。專案中需要 infrawise.yaml 設定檔,且每個服務都必須明確啟用。需要 AWS 憑證(沿用現有 profile 或 SSO 鏈),以及唯讀資料庫連線字串(可引用環境變數)。掃描 Python 程式碼需要 PATH 中有 python3。選用的 HTTP 模式會監聽本機 3000 埠。
安裝前請注意
它會讀取雲端與資料庫中介資料,應授予最小權限的唯讀憑證與專用唯讀資料庫使用者。連線字串可能含有密碼,建議以環境變數替換而不要提交進儲存庫。選用的定時背景重新整理可能產生 AWS API 與資料庫費用。發現結果是靜態警告而非實際查詢計畫,動態建構的查詢可能被漏掉。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Infrawise,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

[Infrawise logo]

Infrawise

Your AI coding assistant finally knows your infra.

[npm version] [Publish to npm] [CI] [License: MIT] [OpenSSF Scorecard] [infrawise MCP server] [Infrawise on HOL Registry (Trust Score)] [Infrawise on Product Hunt]

Website · Docs · Quick start

Infrawise gives AI coding assistants deterministic infrastructure awareness.

It statically analyzes your codebase, cloud infrastructure, and database schemas, then exposes that context through MCP so tools like Claude Code can understand your actual tables, indexes, query patterns, and service relationships instead of guessing from source files alone.

[infrawise start --claude, then Claude Code answers an SQS handler question with the exact event shape and queue risks pulled live from infrawise]


Why this exists

New software developers don't write wrong code. Claude Code writes wrong code and they ship it. Infrawise is the only thing standing between Claude Code's generated output and a production incident.

AI coding assistants can read your source files but have no deterministic knowledge of your infrastructure. They do not know which GSIs exist, how tables are partitioned, which functions already trigger scans, or where indexes are missing. So they guess.

Infrawise replaces guessing with infrastructure-aware context.

Without Infrawise, an AI assistant might:

  • Suggest a .scan() on your Orders table that has 50M rows
  • Recommend adding a GSI on status that you already have
  • Write a SELECT * when you need to keep query cost low
  • Not notice that 5 functions are already hammering the same partition key

With Infrawise, it knows:

  • Your exact table schemas, partition keys, sort keys, and GSIs
  • Which functions query which tables and how
  • Which patterns are already flagged as high severity
  • The exact CREATE INDEX SQL or GSI config for your tables — not generic advice

Installation

Requires Node.js 22 or later (node --version).

bash
npm install -g infrawise

or use without installing:

bash
npx infrawise start --claude

Quick start

bash
cd your-projectinfrawise start --claude

That's it. Infrawise will:

  1. Probe your environment and generate infrawise.yaml (first time only — asks which AWS profile to use only if you have several)
  2. Scan your AWS services, databases, and codebase
  3. Write .mcp.json so your editor auto-connects on every future launch
  4. Open Claude Code with all 22 MCP tools ready

Every time after:

bash
claude    # no infrawise command needed — editor manages the connection

Analysis is cached for 24 hours. infrawise serve --stdio (spawned automatically by your editor) connects and lists tools without loading the snapshot or running analysis. The first infrastructure tool call loads the cache; if it is missing or expired, that call waits for a fresh analysis. Concurrent calls share that initial analysis. Run infrawise start before opening your editor to prepare the cache and avoid that first-call wait. File watching starts once the snapshot is loaded. HTTP serve still loads its snapshot before listening.

After the first code refresh, the server retains extracted operations and dependency paths, then scans only changed files and their transitive importers. TypeScript ASTs are released as files are processed. Python saves scan only the changed Python files. Added and deleted files update the snapshot, saves are batched for two seconds, and edits made during a refresh are queued. Changing a tsconfig*.json rebuilds the scanner. IaC extraction, graph construction, and analyzers still run across the full snapshot to preserve cross-resource findings; cloud metadata stays cached. No configuration or CLI flags are needed.

Findings (3 total)
1. [HIGH] Full table scan detected on DynamoDB table "Orders"   listAllOrders() scans without any filter — reads every item in the table.   Recommendation: Replace Scan with Query using a partition key or add a GSI.
2. [MEDIUM] PostgreSQL table "users" has no index on column "email"   No matching leading-column index was observed for "email"; verify with EXPLAIN.   Recommendation: CREATE INDEX CONCURRENTLY idx_users_email ON users(email);
3. [MEDIUM] DynamoDB table "Sessions" accessed by 6 distinct code paths   High access concentration may create hot partition issues at scale.

Demo

Two demos run infrawise against real AWS APIs emulated locally in Docker, at zero cost and with no real AWS account.

  • demo/floci/ uses Floci, an MIT-licensed emulator that covers every service infrawise supports — including CloudFront, API Gateway v2, RDS, Cognito, Kinesis, ElastiCache, and MSK. No auth token, no sign-up. Start here.
  • demo/localstack/ uses LocalStack community edition, which covers the core services.

Both listen on port 4566, so run one at a time.

[infrawise analyze running against the LocalStack demo and reporting the high-severity findings]


Using with AI coding assistants

Claude Code (recommended)

bash
infrawise start --claude

Writes .mcp.json to your project root (merging with any MCP servers already configured there) and opens Claude Code. Claude Code reads .mcp.json automatically on every launch and manages the infrawise serve --stdio process — no server to start, no ports to configure.

Infrawise is also installable as a Claude Code plugin. It registers the same MCP server and still needs an infrawise.yaml in the project, which infrawise start creates:

/plugin marketplace add Sidd27/infrawise/plugin install infrawise@infrawise

Cursor

bash
infrawise start --cursor

Writes .cursor/mcp.json (merging with any existing MCP servers) and opens Cursor. All 22 infrawise tools are available in Cursor's MCP panel.

VS Code

bash
infrawise start --vscode

Writes .vscode/mcp.json (merging with any existing MCP servers) and opens VS Code. The tools are available to Copilot agent mode via the MCP servers panel.

Any editor (no flag)

bash
infrawise start

Writes .mcp.json (merging with any existing MCP servers) and exits. Open whichever editor you prefer — point it at infrawise serve --stdio --config /path/to/infrawise.yaml as an MCP server command.

HTTP transport (alternative)

If your editor or workflow requires an HTTP MCP endpoint instead of stdio:

bash
infrawise serve    # starts server at http://localhost:3000/mcp

Add to your editor's MCP config:

json
{  "mcpServers": {    "infrawise": {      "url": "http://localhost:3000/mcp"    }  }}

MCP tools

Every tool is annotated read-only (readOnlyHint: true, openWorldHint: false), so MCP clients that honor annotations can call them without a confirmation prompt.

ToolWhat it provides
get_infra_overviewComplete snapshot — services, counts, high-severity findings, configured flag (data age and per-source status ride the dataHealth block on every response)
get_graph_summaryFull infrastructure graph — all nodes, edges, and findings
get_table_schemaColumn-level schema for named tables/collections — types, PKs, FKs, indexes, DynamoDB keys/billing mode, cost signal (no row data)
analyze_functionIssues in a specific function — scans, missing indexes, N+1, trigger event shapes, missing IAM permissions; returns every same-named file as a separate match, or bind to one with the optional file input; names refused Lambda links and why (unresolvedLambdas)
suggest_gsiExact GSI config for a DynamoDB table + attribute — names the existing index instead when one already covers it
postgres_index_suggestionsExact CREATE INDEX SQL for your actual table
suggest_mongo_indexExact createIndex command for a MongoDB collection + field
mysql_index_suggestionsExact ALTER TABLE ADD INDEX SQL for your MySQL table
get_queue_detailsSQS queues — DLQ status, encryption, FIFO type, visibility timeout, message counts
get_api_routesAPI Gateway APIs (REST, HTTP, WebSocket) — routes, HTTP methods, paths, and Lambda integrations
get_topic_detailsSNS topics — subscription counts, protocols, and filter policies (required message attributes per subscription)
get_secrets_overviewSecrets Manager — names, rotation status, and key names inferred from code (values never included)
get_parameter_overviewSSM Parameter Store — names, types, tiers (values never included)
get_lambda_overviewLambda functions — runtime, memory, timeout, execution role ARN, triggers (SQS/SNS/DynamoDB/Kinesis/MSK/EventBridge/S3), env var key names, cost signal, why a Lambda could not be linked to its source (unresolvedLink)
get_eventbridge_detailsEventBridge rules — name, state, schedule/event pattern, target functions
get_s3_overviewS3 buckets — versioning, encryption, public access, event notifications
get_log_errorsCloudWatch log group names and retention (metadata only; no message bodies)
get_stack_outputsStack outputs and cross-stack exports parsed from local IaC files, with staleness flags for orphaned cdk.out templates
get_cognito_overviewCognito user pools — MFA config, app client auth flows, OAuth settings, token validity (secrets never included)
get_stream_detailsKinesis streams (shards, retention, capacity mode) and MSK clusters (state, Kafka version, brokers)
get_cache_overviewElastiCache clusters — engine, encryption in transit/at rest, replication group, failover, cost signal (data never read)
get_cloudfront_overviewCloudFront distributions — per-behavior path patterns, origins (S3 vs custom, resolved API Gateway name), cache policy, viewer protocol policy

Every response carries a dataHealth block with a fixed shape: when the infrastructure was read and how long ago, the status of each source behind that answer, whether cdk.out has been synthed since, and the command that refreshes. Every key is always present, so nothing has to be inferred from a field's absence — an empty result you can't distinguish from a failed one reads as "no queues need a DLQ" when the truth is "SQS was never listed".

Infrawise reports; it doesn't rule. Pass maxAgeSeconds when a question is point-in-time and the answer tells you whether the data meets it (advisory — the data still comes back, marked). A running server rechecks the cache on each tool call, so an open session picks up a fresh infrawise analyze on its next question, without a restart. infrawise analyze and infrawise check print the same source warnings and stop calling a run clean when any source went unread.

Age is a proxy for drift, not drift itself — a three-day-old snapshot of an untouched account is accurate, and a five-minute-old one taken before a terraform apply isn't. How Infrawise handles staleness covers where that proxy misleads and what to do about it; the data freshness reference is the field-by-field table and the freshness config key.


Analysis capabilities

Infrawise has two analysis layers:

Infrastructure analysis (all languages)

Works from AWS APIs, database schema introspection, and IaC files — no dependency on application code:

ServiceWhat it checks
DynamoDB schemaTables, GSIs, partition keys, billing mode, cost signal (provisioned capacity)
PostgreSQL / MySQL schemaTables, indexes, column types
MongoDB schemaCollections, indexes
SQSMissing DLQs, unencrypted queues, large backlogs, FIFO detection, visibility timeout below the consumer Lambda timeout (high) or below AWS's recommended 6× (medium)
SNSSubscription filter policies — required message attributes per subscription
Apache Kafka (kafkajs)Producer/consumer topic mapping from code — any broker (self-hosted, Confluent, Redpanda, MSK); distinct from the MSK Lambda trigger
Secrets ManagerMissing secret rotation
LambdaDefault memory (128 MB), high timeouts, triggers (SQS/SNS/DynamoDB/Kinesis/MSK/EventBridge/S3), missing DLQ on trigger source, cost signal (high memory with no throttling evidence)
S3Public access blocking (verify), missing versioning, missing encryption
EventBridgeRules, schedules, event patterns, target Lambda functions
API GatewayREST, HTTP, and WebSocket APIs — routes, methods, Lambda integrations
RDSPublicly accessible, no backups, unencrypted, no deletion protection, single-AZ, cost signal (Multi-AZ on a non-production-looking instance)
CloudWatch LogsLog groups with no retention policy
CognitoUser pools and app client config — auth flows, OAuth settings, token validity, client secret presence
Kinesis / MSKStreams (shards, retention, capacity mode) and MSK clusters (state, Kafka version, brokers)
ElastiCacheMissing in-transit encryption, single-node clusters with no replication, cost signal (more than 3 nodes)
CloudFrontBehaviors serving traffic over plain HTTP (allow-all viewer protocol policy)
Runtime signals (opt-in)Lambda throttling/errors and stale queue messages from CloudWatch metrics
Terraform / CloudFormation / CDKIaC drift vs deployed state; stack outputs and cross-stack exports

Code correlation analysis (TypeScript / JavaScript / Python)

Uses ts-morph AST analysis to detect which functions call which tables and how:

Python repositories are scanned with a bundled stdlib-ast scanner (requires python3 on PATH; skipped with a warning otherwise): boto3 clients and dynamodb.Table() resources, cursor.execute SQL, pymongo collections, and kafka-python/confluent-kafka producers and consumers. Language detection is automatic — TypeScript and Python scans each run only when matching files exist.

AnalyzerSeverityWhat it detects
Full Table Scan (DynamoDB)High.scan() calls without filters
Missing GSIMediumQueries on attributes without a matching GSI
Hot PartitionMedium5+ distinct code paths hitting the same table
Missing Index (PostgreSQL)MediumTables queried without indexes
N+1 QueryHighRepeated query patterns from ORM loops
Large SELECTLowSELECT * usage
Missing MySQL IndexMediumMySQL tables queried without indexes
MySQL Full Table ScanHighFull table scan patterns in MySQL queries
Missing Mongo IndexMediumCollections queried without secondary indexes
Collection ScanHighfind() calls without filter predicates
Pipeline: scan in consumerHigh / VerifyFull scan inside an event-triggered Lambda handler (High when the lambda-to-code link is IaC-proven, Verify when name-matched)
Pipeline: repeated table accessMedium / VerifySame table read by 2+ functions in one service pipeline
Pipeline: missing DLQ hopMediumMid-pipeline queue (has producer and consumer) with no Dead Letter Queue

Projects in other languages still get full value from infrastructure-level analyzers — code correlation (function-to-table mapping, N+1 patterns) currently supports TypeScript, JavaScript, and Python.

The scanner supports: AWS SDK v3/v2 for DynamoDB, pg/Prisma/Knex for PostgreSQL, mysql2/Knex for MySQL, driver/Mongoose for MongoDB, AWS SDK v3 for SQS/SNS/SSM/Secrets/Lambda, and kafkajs for Kafka topics (producer/consumer).


How it works

  1. Infrawise scans your repository and infrastructure metadata
  2. A graph engine maps services, schemas, indexes, and query patterns
  3. Rule-based analyzers detect infrastructure and query anti-patterns
  4. The resulting context is exposed through MCP
  5. AI coding assistants query this context while generating code

Deterministic analysis

Infrawise does not use an LLM to analyze your infrastructure. All extraction and analysis are deterministic: AST parsing, schema introspection, rule-based analyzers, and graph correlation. LLMs are only consumers of the generated context through MCP.


Analysis confidence and refresh policy

check uses exit 0 for a completed check below the severity threshold, exit 1 for blocking findings, and exit 2 for incomplete extraction or analyzer failures. Failed and partial sources block by default; --allow-incomplete explicitly permits success when there are no blocking findings. --severity only filters analyze report output and never changes CI policy.

Relational schemas include ordered index columns, method, partial, and valid metadata. SQL analysis compares supported filter columns with leading index columns; an unrelated primary key no longer hides a missing access path. Findings are static warnings, not observed query plans. Partial/expression indexes and unsupported predicates require manual verification with EXPLAIN. Query values are not retained in predicate metadata.

Every response includes dataHealth.codeCoverage: recognized operation counts, unresolved reference counts, unsupported SQL counts, and limitations. These counts describe recognized patterns only. Wrappers, dynamic names, and unsupported constructs can be missed. get_graph_summary lists unresolved recognized references; absence of an edge never proves no runtime access.

get_log_errors now returns retention metadata only: errorCount: null, topErrorPatterns: [], errorsObserved: false. The compatibility name does not imply error sampling. Log message bodies are never requested. Older caches are invalidated so previously sampled patterns are not served.

For optional background refreshes after the initial snapshot loads:

yaml
freshness:  suggestRefreshAfterHours: 6  refreshIntervalMinutes: 15

refreshIntervalMinutes is opt-in, between 1 and 1440 minutes, and performs full cloud/database/code analysis between tool requests. It is serialized with source refreshes, can incur API/DB costs, and stops scheduling if the config changes until restart. It bounds snapshot age while the server runs; it does not detect deployments instantly. For exact deployment boundaries run infrawise analyze --config infrawise.yaml after deployment; already-running MCP sessions see the refreshed cache on their next call.

To improve assistant use, follow the assistant workflow. Evaluate real editor runs with pnpm eval:assistant traces.json; see evaluation instructions. Use pnpm benchmark for repeatable performance and result-equivalence checks; see benchmark methodology. Synthetic controls are not a measured model-quality score.

analyze_function returning found: false means absent from the recognized graph, not proven absent from source code. Check source health, wrappers, and dynamic references before making an absence claim. Failed session refreshes appear in dataHealth.codeCoverage.refreshError while the previous graph is retained.

Incomplete runtime metric reads are recorded in source health and block check by default; they are not interpreted as zero activity.

Validation commands: pnpm test:demo exercises seeded local databases, index metadata, coverage, and CI exit codes; pnpm test:demo --background also verifies the timed refresh. Start and seed the database demo first.

Large repository memory

TS/JS scanning uses a lazy async generator and sequential batches capped at 32 files or 512 KiB of source (a larger supported file is scanned alone). Each batch releases its ASTs before the next; watch sessions retain extracted operations and dependency paths rather than a whole-project compiler AST. Imported dependency types and standard-library declarations are not loaded. Configured source selection is respected, and dependency folders, declarations, and common generated outputs (dist, build, .next, .nuxt, .output, coverage) are excluded before parsing.

A source file above 2 MiB is reported as incomplete code coverage, with its path in source health, while readable files are still scanned. check exits 2 for incomplete analysis unless --allow-incomplete is explicit. Memory still scales with extracted operations and the infrastructure graph; this is not an unlimited-repository guarantee. No larger Node heap setting is required for ordinary scanning. Run pnpm test:memory for a repeatable 256 MiB heap regression, including full scans, incremental edits, shared-import updates, and the actual analyze CLI.


Configuration

infrawise.yaml is generated by infrawise start (or infrawise start --interactive for the guided wizard) and lives in your repo root. Every service must be explicitly enabled: true — infrawise never connects to anything not listed in config.

Connection strings support ${ENV_VAR} substitution so passwords never need to be committed:

yaml
postgres:  enabled: true  connectionString: postgresql://infrawise_ro:${DB_PASSWORD}@host:5432/mydb

Full example:

yaml
project: payments-service
aws:  profile: default # AWS profile from ~/.aws/credentials  region: ap-south-1
dynamodb:  enabled: true  includeTables: # omit to include all tables    - Orders    - Users
postgres:  enabled: true  connectionString: postgresql://infrawise_ro:${DB_PASSWORD}@host:5432/mydb
mysql:  enabled: false  connectionString: ''
mongodb:  enabled: false  connectionString: ''
sqs:  enabled: true
sns:  enabled: true
ssm:  enabled: true  paths: [] # filter by prefix e.g. ["/myapp/prod"]
secretsManager:  enabled: true
lambda:  enabled: true  includeFunctions: # omit to include all functions    - myFunction    - anotherFunction
eventbridge:  enabled: true
rds:  enabled: false
s3:  enabled: false
apiGateway:  enabled: false
cognito:  enabled: false
kinesis:  enabled: false
msk:  enabled: false
elasticache:  enabled: false
cloudfront:  enabled: false
runtimeSignals:  enabled: false # Lambda throttles/errors + queue age via CloudWatch metrics  windowHours: 24
cloudwatchLogs:  enabled: false  logGroupPrefixes: []  windowHours: 24
analysis:  hotPartitionThreshold: 5  hotPartitionThresholds:    high-traffic-table: 12
freshness:  suggestRefreshAfterHours: 6 # when MCP responses start hinting to re-analyze

AWS setup

Infrawise is read-only. Minimum IAM policy for DynamoDB:

json
{  "Version": "2012-10-17",  "Statement": [    {      "Effect": "Allow",      "Action": ["dynamodb:ListTables", "dynamodb:DescribeTable"],      "Resource": "*"    }  ]}

For the full policy across all supported services, how to scope it to only the services you enable, and using a session policy for temporary scoped credentials, see the AWS setup guide.

For SSO profiles, log in before running infrawise:

bash
aws sso login --profile myprofile

PostgreSQL setup (optional)

Create a read-only user for infrawise:

sql
CREATE USER infrawise_ro WITH PASSWORD 'yourpassword';GRANT CONNECT ON DATABASE yourdb TO infrawise_ro;GRANT USAGE ON SCHEMA public TO infrawise_ro;GRANT SELECT ON ALL TABLES IN SCHEMA public TO infrawise_ro;

For Amazon RDS: allow inbound on port 5432 from your machine's IP in the security group.


CLI reference

CommandWhat it does
infrawise startPrimary command — probe env, generate config, analyze, write editor MCP config
infrawise start --claudeSame as above, then opens Claude Code
infrawise start --cursorSame as above, then opens Cursor
infrawise start --vscodeSame as above, then opens VS Code (merges into .vscode/mcp.json)
infrawise start --interactiveRun the guided setup wizard instead of auto-discovery
infrawise start --rediscoverDelete infrawise.yaml + .infrawise/, then re-probe and re-analyze
infrawise analyzeForce a full re-scan with extraction progress and a time estimate from past runs — useful after major infrastructure changes
infrawise checkCI gate — analyze and exit non-zero when findings reach the threshold severity
infrawise serveStart the MCP server — HTTP by default, or --stdio for editor integration
infrawise doctorDiagnostic escape hatch — validate AWS/DB access, config, and repo scan

infrawise analyze options

FlagDescription
-c, --config <path>Path to infrawise.yaml (default: infrawise.yaml)
-r, --repo <path>Repository to scan (default: current directory)
--no-cacheSkip reading/writing the cache
-o, --output <path>Save findings as a markdown report, e.g. report.md
--severity <level>Only show findings at or above this level: high | medium | low
bash
# Export a shareable findings reportinfrawise analyze --output report.md
# Only show high-severity issuesinfrawise analyze --severity high
# High-severity issues only, saved to a fileinfrawise analyze --severity high --output report.md

infrawise check options (CI/CD)

check runs a fresh analysis and sets a non-zero exit code when blocking findings exist, so it can gate a pipeline without an AI editor.

FlagDescription
-c, --config <path>Path to infrawise.yaml (default: infrawise.yaml)
-r, --repo <path>Repository to scan (default: current directory)
--fail-on <level>Severity that fails the build: high (default) | medium | low
--allow-incompleteExplicitly permit success when sources failed or were partly read
bash
# Block a deploy if any high-severity finding exists (exit 1)infrawise check
# Stricter gate — fail on medium and aboveinfrawise check --fail-on medium

infrawise serve options

FlagDescription
-c, --config <path>Path to infrawise.yaml (default: infrawise.yaml)
--stdioUse stdio transport (for editors via .mcp.json) instead of HTTP
-p, --port <number>Port to listen on, HTTP only (default: 3000)

Security

  • Read-only — never writes to AWS or your database, never executes DDL
  • Local-first — everything runs on your machine, nothing sent to external servers
  • No telemetry — zero data collection
  • Credentials — uses your existing AWS credential chain, never stored by infrawise

🔒 Security & Project Naming Note

You might see this package flagged on certain supply-chain security scanners under "deceptive naming." This is a false positive triggered by automated tools because of the prefix "infra." This project is completely safe, independent, and unaffiliated with any commercial trademarks.


What Infrawise is not

Infrawise is not an AI agent framework, an infrastructure provisioning tool, an observability platform, or a cloud management dashboard.

It is a deterministic infrastructure intelligence layer for AI-assisted development.


Current limitations

  • Code-level correlation supports TypeScript, JavaScript, and Python (Python requires python3 on PATH)
  • Dynamically constructed queries may not always be resolved statically
  • Runtime tracing is not yet implemented
  • Static scanning covers recognized patterns; extracted operations and graph size still affect memory use

Architecture overview

[Architecture]

Source layout

src/  types.ts      Shared type definitions  core/         Config (Zod + YAML), logger (Pino), local cache  graph/        Graph engine — nodes, edges, builder  adapters/    aws/        DynamoDB, S3, Lambda, SQS/SNS/SSM/Secrets/EventBridge/RDS/APIGateway, CloudWatch    db/         PostgreSQL, MySQL, MongoDB    iac/        Terraform, CDK, CloudFormation (local file parsing)  analyzers/    39 rule-based analyzers  context/      Repository scanner (ts-morph AST + Python stdlib-ast subprocess)  server/       Fastify MCP server (@modelcontextprotocol/sdk, Streamable HTTP)  cli/          CLI commands (Commander.js)

Roadmap

Feature roadmap is tracked in the Infrawise v1 project board. Feature requests and upvotes welcome.


Contributing

See CONTRIBUTING.md for a full walkthrough — including how to add a new service adapter, a new analyzer, and the PR checklist.

Releasing

Before releasing, run pnpm check:docs — it fails if the version or the MCP tool list in README.md/AGENTS.md/llms.txt drifted from src/server/index.ts.

bash
pnpm release patch    # 0.1.2 → 0.1.3  (bug fixes)pnpm release minor    # 0.1.2 → 0.2.0  (new features, backwards compatible)pnpm release major    # 0.1.2 → 1.0.0  (breaking changes)pnpm release 1.5.0    # explicit version

Bumps package.json, commits, tags, pushes, and creates a draft GitHub release with notes from commit messages. Then publish the draft on GitHub to trigger npm publish.


License

MIT

來源:README.md,提交 1b998ad

工具

0
SourceWeft 曾在隔離沙箱中以無憑證方式啟動該軟體包一次,以列出其工具,但未能完成:伺服器未能啟動。

版本歷史

3
  1. v1.0.0最新Oct 21, 2026
  2. v0.28.4Oct 8, 2026
  3. v0.28.2Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分