A local AI adoption radar for tools, MCP servers, agent frameworks, and model drops.
Project description
Frontier Scout
Deep Scout — know about new AI tools, MCP servers, models, and risky dependency upgrades before everyone else. Personalised, local-first, try-before-trust.
Quickstart · Demo · Roadmap · Bug report · Feature request · Releases
📑 Table of contents
🔭 Why Frontier Scout
Deep Scout — know about new AI tools, MCP servers, models, and risky dependency upgrades before everyone else. Frontier Scout reads your repo locally (filenames + AST imports, never source content) and turns the firehose of public AI releases into a personalised adoption radar with ADOPT / TRIAL / ASSESS / HOLD verdicts.
Three promises that anchor the product:
- Try before trust. Every adoption candidate gets a sandbox dry-run receipt, a permission map, and a guard check before it touches your real repo.
- Fix vulnerabilities you didn't know existed. Dependency intelligence cross-references your manifests against curated feeds — security, hardening, and breaking upgrades — and emits a trial recipe, not a lockfile rewrite.
- Bound risky engineering changes. Incident Change Scout turns an incident ticket into cited context, a bounded remediation plan, and a HITL approval interrupt before any write.
The TUI is the front door. Inside any repo:
frontier-scout
That lands you on Mission Control — two tabs only: Scout (the
product) and Settings. The Scout tab shows one unified list of
findings (AI tools + dependency upgrades), each row with full
reasoning: what it is, why we suggest it, why it fits your repo,
risk reasoning, and the next safe step. Press Enter to write a
dry-run receipt. Run frontier-scout setup from anywhere to configure
your LLM backend or schedule recurring scouts.
Every other CLI command (evaluate, trial, guard, report,
packs, deps, incident, dossier) still works for scripting and
CI; the TUI no longer tries to surface them all on one screen.
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.
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. |
🧰 Built with
⚡ Quickstart
Prerequisites: Python 3.11+.
Install from PyPI with pipx (recommended) or pip:
pipx install frontier-scout
# or, no install:
uvx frontier-scout demo
# or, plain pip:
pip install frontier-scout
Configure once (LLM backend, automation vs ad-hoc):
frontier-scout setup
Then, inside any repo, open Mission Control:
frontier-scout
Mission Control lands on the Scout tab — the radar that ranks the
latest AI releases that fit your repo. Tab keys 1–2 switch between
Scout and Settings. From the highlighted verdict row, every
core CLI capability is one keystroke: Enter for a dry-run trial,
L for a dry-run lab (press again within 3s to spend on a live
hermetic install), e for the Adoption-Firewall evaluation, D
for a dossier saved under ~/.frontier-scout/dossiers/. Run it
outside a repo and the picker offers 🌐 Universal scout (no repo)
so you still get the latest releases on a golden plate, just not
tailored. The setup is remembered — once you've run the wizard,
frontier-scout from any directory drops you straight into Mission
Control; use frontier-scout setup or Settings → Open setup
wizard to reconfigure. The verdict detail panel surfaces explicit
Concerns — burns tokens, abandoned, vendor lock-in,
security surface, marketing-only, unproven — so you always see
why we'd push back on adoption. The import-evidence scanner reads
ASTs locally, provider availability shows up as cards, and nothing
reads secrets, logs into services, installs tools, or sends repo
content to an LLM. Limited terminals can use
frontier-scout setup --plain; automation can use
frontier-scout setup --json. The layout reflows for VS Code-style
80×24 panels.
On first launch, a one-time welcome overlay appears after the brand
splash and walks you through the three core actions — Scout verdicts,
trialling a tool, and running guard in CI. Press any key to enter
Mission Control; the overlay never shows again.
Develop locally
git clone https://github.com/ajaysurya1221/frontier-scout
cd frontier-scout
python3 -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
frontier-scout --help
⏱ 60-second demo
No API key. No Slack workspace. No cloud setup.
make demo
open .scratch/incident-demo/answer.md
The 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
This spins up a local HTTP server, opens your browser automatically at
http://localhost:<port>/, and prints a guided next-steps panel in the
terminal. Press Ctrl+C to stop serving.
The terminal panel looks like:
╭── ◉ FRONTIER · SCOUT demo ready ───────────────────────────────────╮
│ Serving at http://localhost:54321 · Ctrl+C to stop │
│ │
│ ✓ briefing.html adoption receipts │
│ ✓ verdicts.json raw verdict data │
│ ✓ judge-trace.md quality trace │
│ │
│ Next steps: │
│ http://localhost:54321 ← browser opened · adoption cards │
│ frontier-scout setup ← Mission Control TUI │
│ frontier-scout scan --dry-run ← verdicts for this repo │
│ ANTHROPIC_API_KEY=<key> ... ← live scan │
╰───────────────────────────────────────────────────────────────────────╯
To write files without starting a server (CI or offline use):
frontier-scout demo --no-serve
The radar demo writes demo/briefing.html,
demo/briefing.md,
demo/verdicts.json,
demo/cost-breakdown.md, and
demo/judge-trace.md.
🛰 Usage — 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
initwrites a local stack profile under~/.frontier-scout(languages, package managers, container files, agent configs, and v0.4 import evidence from a tree-sitter pass).evaluaterecords source-backed local evidence and a permission manifest for one URL — capability map included.trial --dry-runwrites an adoption receipt without installing anything; full trials use the hermetic lab.guardchecks the local evidence ledger for risky tools that still need a stored trial receipt; CI-friendly exit codes.reportrenders the static HTML executive radar.
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 .
🔒 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.
- The import-evidence scanner is deterministic, local, and offline. It
parses ASTs via
tree-sitter, never sends source content to an LLM, and never reaches the network.
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.
🗺 Roadmap
- v0.1 — CLI scaffold, local demo, SQLite store, public docs.
- v0.2 — Living Scout Packs, dependency intelligence, Adoption
Firewall (
evaluate/trial/guard/policy), Incident Change Scout. - v0.3 — Mission Control terminal setup, provider detection, Scout Pack multi-select, plain/JSON outputs.
- v0.4.0 — Monorepo profile walker + tree-sitter import-evidence
scanner (Python and JS/TS), repo-relative
manifest_path,--no-importsfast path,.understand-anything/detection. - v0.4.1 — Mission Control v2 redesign: branded splash, designer palette, focus borders, modal quit/help/repo-path, RichLog result, sticky status banner, README v2.
- v1.0.0 — Mission Control complete: nine tabs (Scout / Trials
/ Receipts / Guard / Reports / Packs / Deps / Incident / Settings),
scout-first landing with a verdict
DataTableand per-verdict actions, every CLI capability has a TUI surface,--tab/--no-scoutflags, dismiss persistence. - v1.1.0 — Global setup wizard (
frontier-scout setup), automation mode with cron scheduling, notifications, diff view, Go/Rust/Ruby tree-sitter coverage,frontier-scout doctor,clear-history/notifications/cron runCLI siblings. - v1.2 — Streaming subprocess output in Trials, multi-repo workspace, PyPI auto-publish on tag.
- v1.3 — launchd / Windows Task Scheduler integrations, live discovery feeds, scout card view.
See ROADMAP.md for the longer view.
🤝 Contributing
The fastest useful PRs improve the CLI/report path, validator coverage, source quality, or lab isolation.
- Read CONTRIBUTING.md.
- Browse good first issues.
- Respect the Code of Conduct.
Development loop:
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
CI runs compile checks, non-live tests, and a tracked-file secret scan.
Releasing a tagged version
- Bump
project.versioninpyproject.tomlandfrontier_scout/__init__.py. - Append a matching
## X.Y.Z - YYYY-MM-DDsection toCHANGELOG.md. - Merge to
main. - Push annotated tag
vX.Y.Z.
Tag pushes trigger .github/workflows/release.yml, which builds
distributions, creates a GitHub Release from the matching changelog
section, and (via manual workflow_dispatch) publishes to PyPI via
trusted publishing.
📄 License
Distributed under the MIT License.
🙏 Acknowledgments
- Textual — the framework that makes the Mission Control TUI possible.
- tree-sitter-language-pack — precompiled grammars for the v0.4 import-evidence scanner.
- Pydantic — typed models throughout.
- othneildrew/Best-README-Template — the structure this README borrows from.
- Lum1104/Understand-Anything — the tree-sitter half of its design pushed us to ship deterministic import evidence instead of substring heuristics.
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-1.2.1.tar.gz.
File metadata
- Download URL: frontier_scout-1.2.1.tar.gz
- Upload date:
- Size: 218.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1ae3e2c6fc39d271cb19d81026c768d77793a2b738f7beb7e67e3dc894177091
|
|
| MD5 |
a74bd3d475f89873e47177a4d5d75943
|
|
| BLAKE2b-256 |
66dd5fdb7a27731c61b96773fc57afb57623dc135fa17b15de8fe2a2814a9f41
|
Provenance
The following attestation bundles were made for frontier_scout-1.2.1.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-1.2.1.tar.gz -
Subject digest:
1ae3e2c6fc39d271cb19d81026c768d77793a2b738f7beb7e67e3dc894177091 - Sigstore transparency entry: 1656246527
- Sigstore integration time:
-
Permalink:
ajaysurya1221/frontier-scout@bcf8eb90de00505029f76b4020c663b6fb4aa0a4 -
Branch / Tag:
refs/tags/v1.2.1 - Owner: https://github.com/ajaysurya1221
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@bcf8eb90de00505029f76b4020c663b6fb4aa0a4 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file frontier_scout-1.2.1-py3-none-any.whl.
File metadata
- Download URL: frontier_scout-1.2.1-py3-none-any.whl
- Upload date:
- Size: 204.1 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 |
b20a7ff784242cdee8bcaffe51b693d6aa1b8166855524a737fd5022d3189fb9
|
|
| MD5 |
824a5920d126b3fab626d527e569a09f
|
|
| BLAKE2b-256 |
5cb61657d9bfd53748859701e49933bb75dfe3b54db14e7d18ac2b76ed9264b2
|
Provenance
The following attestation bundles were made for frontier_scout-1.2.1-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-1.2.1-py3-none-any.whl -
Subject digest:
b20a7ff784242cdee8bcaffe51b693d6aa1b8166855524a737fd5022d3189fb9 - Sigstore transparency entry: 1656246877
- Sigstore integration time:
-
Permalink:
ajaysurya1221/frontier-scout@bcf8eb90de00505029f76b4020c663b6fb4aa0a4 -
Branch / Tag:
refs/tags/v1.2.1 - Owner: https://github.com/ajaysurya1221
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@bcf8eb90de00505029f76b4020c663b6fb4aa0a4 -
Trigger Event:
workflow_dispatch
-
Statement type: