A local AI adoption radar for tools, MCP servers, agent frameworks, and model drops.
Project description
Frontier Scout
Local-first try-before-trust for AI tools, agents, MCP servers, models, and risky engineering changes.
Killer Workflow · Demo · What You Get · Questions · Architecture · Safety · Quickstart · Roadmap · Security
Frontier Scout answers the question technical teams now hit every week:
Should this AI tool, agent, MCP server, model, or engineering change get any access to our code, shell, browser, network, or credentials?
It has three compatible surfaces:
- Tool Test Lab / Adoption Firewall: one-link
evaluate,trial, andguardworkflows that record permission manifests and try-before-trust receipts before a tool touches a real project. - AI Tool Radar: a local adoption radar that turns public AI-tool signals into ADOPT / TRIAL / ASSESS / HOLD verdicts with source evidence.
- Incident Change Scout: a graph-aware engineering workflow that turns an incident ticket into cited context, a bounded remediation plan, approval interrupts, trace/audit logs, and an eval result.
The posture is deliberately boring in the good way: CLI first, SQLite/local files by default, static reports, no hosted telemetry, no hidden auto-installs, and explicit approval before risky actions.
Killer workflow
Someone drops a GitHub repo, MCP server, plugin, model, or agent framework in a newsletter or team chat. Frontier Scout turns that link into a local adoption decision instead of a vibes-based "looks safe" answer:
frontier-scout init --repo .
frontier-scout evaluate <tool-url>
frontier-scout trial <tool-or-url> --dry-run
frontier-scout guard --repo .
frontier-scout report
That flow compares the tool to lightweight local repo signals, classifies the permission surface, runs safe probes when the runtime is supported, stores a local receipt, and tells CI whether risky adoption evidence is missing.
60-second demo
No API key. No Slack workspace. No cloud setup. Start with the engineering workflow:
git clone https://github.com/ajaysurya1221/frontier-scout
cd frontier-scout
python3 -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
make demo
open .scratch/incident-demo/answer.md
Incident demo writes:
.scratch/incident-demo/answer.md— cited remediation answer..scratch/incident-demo/trace.jsonl— local OpenTelemetry-shaped spans..scratch/incident-demo/audit.jsonl— Cloudflare-style audit records..scratch/incident-demo/eval.json— golden eval score.
Then run the AI tool radar demo:
frontier-scout demo
open demo/briefing.html
Radar demo writes:
demo/briefing.html— static executive radar.demo/briefing.md— Markdown version for issues/docs.demo/verdicts.json— structured verdict payload.demo/cost-breakdown.md— expected live-run spend shape.demo/judge-trace.md— what the judge layer protects against.
What you get
- Incident Change Scout for provenance-first incident analysis, graph-aware retrieval, bounded remediation planning, approval interrupts, and local evals.
- AI ecosystem scouting across GitHub releases, trending repos, MCP/skills sources, RSS, HN, Hugging Face, and a small arXiv slice.
- Living Scout Packs for AI devtools, MCP, agent frameworks, local AI, RAG/memory, workflow builders, and inference gateways. Seeds are only bootstraps; candidates can be promoted, demoted, or retired as evidence changes.
- Dependency intelligence for repo-relevant security, hardening, and breaking releases. It explains why an upgrade matters here and emits a trial recipe instead of editing your lockfiles.
- Mission Control setup with an arrow-key terminal UI for repo fingerprinting, provider checks, Scout Pack selection, and the first safe run.
- ADOPT / TRIAL / ASSESS / HOLD verdicts with risk, stack fit, readiness, adoption cost, provenance, and next action.
- Adoption Firewall commands for try-before-trust evaluation: local evidence ledger, permission manifests, sandbox trial receipts, and CI-friendly guard checks.
- Optional Opus judge pass that vetoes patch-release noise, incident-as-tool mistakes, unsupported claims, and weak ADOPT calls.
- Repo-aware stack detection from common manifests and agent config files.
- Polyglot lab runner for Python, Node, and Hugging Face packages with hermetic subprocess execution.
- Local history in SQLite so future CLI/MCP/plugin surfaces can compare what changed over time.
Why not just use newsletters or GitHub Trending?
| Option | What it gives you | What is missing |
|---|---|---|
| Newsletters | Good awareness | Not repo-aware, not source-verifiable, rarely actionable. |
| GitHub Trending | Popularity signal | No risk/fit/adoption-cost judgment. |
| Manual research | Highest nuance | Slow, inconsistent, easy to skip when busy. |
| Frontier Scout | Source-backed verdicts and lab next steps | Requires your API key for live scans. |
Questions people ask
Why not just ask ChatGPT or Claude if a repo is safe? You can for a one-off opinion. Frontier Scout is for repeatable team decisions: same policy, local evidence, stored receipts, history, and CI guardrails.
Does it know my repos? It reads lightweight stack signals locally, such as manifests, CI files, Docker files, and agent/MCP config. It should not upload your source code just to personalize recommendations.
How can one workflow assess Python, Rust, MCP servers, plugins, or concepts? It does not pretend they are the same. One command routes targets differently: supported packages can get sandbox probes, MCP servers get capability audits, models get metadata/runtime checks, and concepts or unsupported runtimes get honest report-only assessment.
Is this like E2B? E2B is a sandbox provider. Frontier Scout is the adoption decision layer: it can decide what deserves a sandbox, run the right probes, and turn the evidence into a verdict. Local/Docker/E2B-style sandbox backends belong in the v0.2 toolbench roadmap.
Can it prove a tool is safe? No. It reduces blast radius and records evidence. Unknown code is still unknown code; the product helps you choose the smallest safe next step.
Will it leak secrets? Trials use temporary workspaces, stripped subprocess environments, timeouts, output caps, secret-pattern checks, and explicit approval gates for risky actions.
Architecture
flowchart LR
Ticket["Incident ticket"] --> DCG["Typed DCG runtime"]
Corpus["Seed corpus"] --> Memory["Memory + graph"]
Memory --> Authz["ReBAC check"]
Authz --> Retrieval["Hybrid retrieval"]
Retrieval --> Context["Context compiler"]
Context --> Gateway["Model gateway"]
Gateway --> DCG
DCG --> Approval["Approval interrupt"]
DCG --> Audit["Trace + audit + eval"]
Sources["Public sources"] --> Scout["Scout funnel"]
Scout --> Score["Sonnet score pass"]
Score --> Verdict["Sonnet verdict pass"]
Verdict --> Judge["Optional Opus judge"]
Judge --> Validators["Deterministic validators"]
Validators --> SQLite["Local SQLite"]
SQLite --> CLI["CLI"]
SQLite --> Report["Static report"]
SQLite --> MCP["Future MCP/plugin surface"]
CLI --> Lab["Hermetic lab"]
The current engine lives in scripts/. The installable CLI lives
in frontier_scout/. scripts/ remains importable so the
existing Scout and lab logic can be packaged without a risky rewrite.
Quickstart
Install from a checkout:
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
frontier-scout --help
For a guided first run, open the terminal mission control:
frontier-scout setup --repo .
It checks your repo fingerprint and provider availability without reading
secrets, logging into services, installing tools, or sending repo content to an
LLM. Limited terminals can use frontier-scout setup --plain; automation can
use frontier-scout setup --json.
Initialize local state and detect stack signals:
frontier-scout init --repo .
Run a free seeded scan:
frontier-scout scan --dry-run --repo .
frontier-scout report --input demo/verdicts.json --output demo/briefing.html
Run a live scan:
export ANTHROPIC_API_KEY=...
frontier-scout scan --repo .
frontier-scout report
Try-before-trust a single tool before granting it project permissions:
frontier-scout evaluate https://github.com/modelcontextprotocol/servers
frontier-scout trial browser-use/browser-use --url https://github.com/browser-use/browser-use --dry-run
frontier-scout guard --repo .
evaluate records source-backed local evidence and a permission manifest.
trial --dry-run writes an adoption receipt without installing anything.
guard checks the local evidence ledger for risky tools that still need a
stored trial receipt.
Inspect living packs and repo-relevant dependency upgrades:
frontier-scout packs list
frontier-scout packs show mcp
frontier-scout profile --repo . --dependencies
frontier-scout deps scan --repo .
packs shows the living radar seeds and candidates. deps scan looks for
meaningful security, hardening, and breaking upgrades that deserve a safe trial,
without modifying manifests or lockfiles.
After the first PyPI publish, the expected package install paths are:
pipx install frontier-scout
uvx frontier-scout demo
Until then, the checkout install above is the supported path. An
npx frontier-scout wrapper is intentionally a later distribution layer, not
the core implementation.
Safety model
Frontier Scout handles untrusted public content and can optionally execute untrusted packages in the lab, so the safety rails are load-bearing:
- Source text is treated as untrusted data, not instructions.
- Tool names are checked against the source pool to reduce hallucinated verdicts.
- Source URLs must pass a domain allowlist.
- Incident and breach headlines are blocked from becoming tool recommendations.
- ADOPT requires enough readiness evidence or gets demoted.
- Adoption Firewall fails closed on unknown MCP/tool capability surfaces.
guardnever modifies the repo; it only reads local evidence and policy.- Lab subprocesses receive a stripped environment, wall-clock timeout, size caps, and generated-script secret scanning.
See SECURITY.md for the threat model.
Cost
The offline demo is free. A normal live weekly scan is designed to stay cheap:
| Component | Typical cost |
|---|---|
| Sonnet score pass | ~$0.15 |
| Sonnet verdict pass | ~$0.04 |
| Optional Opus judge | ~$0.12 |
| Weekly scan | ~$0.30 |
Set JUDGE_ENABLED=false to skip the Opus judge when you want the cheapest
possible run.
Development
make setup
make demo
make test
make eval
make audit
python -m compileall scripts outputs tests frontier_scout
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q
frontier-scout demo
frontier-scout scan --dry-run
CI runs compile checks, non-live tests, and a tracked-file secret scan.
Release
For tagged releases:
- Bump
project.versioninpyproject.toml. - Update the matching section in
CHANGELOG.md. - Merge to
main. - Push annotated tag
vX.Y.Z.
Tag pushes trigger .github/workflows/release.yml, which builds distributions,
publishes to PyPI via trusted publishing, and creates a GitHub Release from
the matching changelog section.
Roadmap
See ROADMAP.md. The short version:
- v0.2 — current release: local radar, Adoption Firewall, Incident Change Scout, Living Scout Packs, dependency intelligence, SQLite, CI, Docker demo, and public docs.
- v0.3 — MCP/plugin surfaces, stronger sandbox/toolbench backends, and optional output integrations on top of the same local evidence store.
Contributing
Read CONTRIBUTING.md. The fastest useful PRs improve the CLI/report path, validator coverage, source quality, or lab isolation. Please also read the Code of Conduct.
License
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file frontier_scout-0.3.0.tar.gz.
File metadata
- Download URL: frontier_scout-0.3.0.tar.gz
- Upload date:
- Size: 142.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
abc2fa8a0aa4a1784a7de10216cc6d7a91f63c35862c8950d85a6df960d968bf
|
|
| MD5 |
838a6375677e4becc19e200b6485f515
|
|
| BLAKE2b-256 |
762b084b53b3fcff26c14db1b990cdf4e1bdc51a53482977edf4f3a8fdbdafee
|
Provenance
The following attestation bundles were made for frontier_scout-0.3.0.tar.gz:
Publisher:
release.yml on ajaysurya1221/frontier-scout
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
frontier_scout-0.3.0.tar.gz -
Subject digest:
abc2fa8a0aa4a1784a7de10216cc6d7a91f63c35862c8950d85a6df960d968bf - Sigstore transparency entry: 1641747416
- Sigstore integration time:
-
Permalink:
ajaysurya1221/frontier-scout@0fc40f2bd00ef0e43296cf1fa9728f388d2e87c9 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/ajaysurya1221
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@0fc40f2bd00ef0e43296cf1fa9728f388d2e87c9 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file frontier_scout-0.3.0-py3-none-any.whl.
File metadata
- Download URL: frontier_scout-0.3.0-py3-none-any.whl
- Upload date:
- Size: 143.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4c9a6e78e24b3bbaf850e218fd7206459685e13feae077d6c81dca276fb16b82
|
|
| MD5 |
fc700a027e99715e373468e98bb911cc
|
|
| BLAKE2b-256 |
76e4b3b907dffcc0696d4572dd12cb53065abfec0000867f250f23b50a853d31
|
Provenance
The following attestation bundles were made for frontier_scout-0.3.0-py3-none-any.whl:
Publisher:
release.yml on ajaysurya1221/frontier-scout
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
frontier_scout-0.3.0-py3-none-any.whl -
Subject digest:
4c9a6e78e24b3bbaf850e218fd7206459685e13feae077d6c81dca276fb16b82 - Sigstore transparency entry: 1641747510
- Sigstore integration time:
-
Permalink:
ajaysurya1221/frontier-scout@0fc40f2bd00ef0e43296cf1fa9728f388d2e87c9 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/ajaysurya1221
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@0fc40f2bd00ef0e43296cf1fa9728f388d2e87c9 -
Trigger Event:
workflow_dispatch
-
Statement type: