by flytohub
The open-source execution engine for AI agents. 412 modules, MCP-native, triggers, queue, versioning, metering.
# Add to your Claude Code skills
git clone https://github.com/flytohub/flyto-coreLast scanned: 5/30/2026
{
"issues": [],
"status": "PASSED",
"scannedAt": "2026-05-30T15:14:24.232Z",
"npmAuditRan": true,
"pipAuditRan": false
}flyto-core is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by flytohub. The open-source execution engine for AI agents. 412 modules, MCP-native, triggers, queue, versioning, metering. It has 407 GitHub stars.
Yes. flyto-core passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/flytohub/flyto-core" and add it to your Claude Code skills directory (see the Installation section above).
flyto-core is primarily written in Python. It is open-source under flytohub on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh flyto-core against similar tools.
No comments yet. Be the first to share your thoughts!
A debuggable automation engine. Trace every step. Replay from any point.
pip install flyto-core[browser] && playwright install chromium
flyto recipe competitor-intel --url https://github.com/pricing
Step 1/12 browser.launch ✓ 420ms
Step 2/12 browser.goto ✓ 1,203ms
Step 3/12 browser.evaluate ✓ 89ms
Step 4/12 browser.screenshot ✓ 1,847ms → saved intel-desktop.png
Step 5/12 browser.viewport ✓ 12ms → 390×844
Step 6/12 browser.screenshot ✓ 1,621ms → saved intel-mobile.png
Step 7/12 browser.viewport ✓ 8ms → 1280×720
Step 8/12 browser.performance ✓ 5,012ms → Web Vitals captured
Step 9/12 browser.evaluate ✓ 45ms
Step 10/12 browser.evaluate ✓ 11ms
Step 11/12 file.write ✓ 3ms → saved intel-report.json
Step 12/12 browser.close ✓ 67ms
✓ Done in 10.3s — 12/12 steps passed
Screenshots captured. Performance metrics extracted. JSON report saved. Every step traced.
With a shell script you re-run the whole thing. With flyto-core:
flyto replay --from-step 8
Steps 1–7 are instant. Only step 8 re-executes. Full context preserved.
# Competitive pricing: screenshots + Web Vitals + JSON report
flyto recipe competitor-intel --url https://competitor.com/pricing
# Full site audit: SEO + accessibility + performance
flyto recipe full-audit --url https://your-site.com
# Web scraping → CSV export
flyto recipe scrape-to-csv --url https://news.ycombinator.com --selector ".titleline a"
Every recipe is traced. Every run is replayable. See all 32 recipes →
pip install flyto-core # Core engine + CLI + MCP server
pip install flyto-core[browser] # + browser automation (Playwright)
playwright install chromium # one-time browser setup
Here's what competitive pricing analysis looks like in Python:
Python — 85 lines
import asyncio, json, time
from playwright.async_api import async_playwright
async def main():
async with async_playwright() as p:
browser = await p.chromium.launch()
page = await browser.new_page()
await page.goto("https://competitor.com/pricing")
# Extract pricing
prices = await page.evaluate("""() => {
const cards = document.querySelectorAll(
'[class*="price"]'
);
return Array.from(cards).map(
c => c.textContent.trim()
);
}""")
# Desktop screenshot
await page.screenshot(
path="desktop.png", full_page=True
)
# Mobile
await page.set_viewport_size(
{"width": 390, "height": 844}
)
await page.screenshot(
path="mobile.png", full_page=True
)
# Performance
perf = await page.evaluate("""() => {
const nav = performance
.getEntriesByType('navigation')[0];
return {
ttfb: nav.responseStart,
loaded: nav.loadEventEnd
};
}""")
# Save report
report = {
"prices": prices,
"performance": perf,
}
with open("report.json", "w") as f:
json.dump(report, f, indent=2)
await browser.close()
asyncio.run(main())
flyto-core — 12 steps
name: Competitor Intel
steps:
- id: launch
module: browser.launch
- id: navigate
module: browser.goto
params: { url: "{{url}}" }
- id: prices
module: browser.evaluate
params:
script: |
JSON.stringify([
...document.querySelectorAll(
'[class*="price"]'
)
].map(e => e.textContent.trim()))
- id: desktop_shot
module: browser.screenshot
params: { path: desktop.png, full_page: true }
- id: mobile
module: browser.viewport
params: { width: 390, height: 844 }
- id: mobile_shot
module: browser.screenshot
params: { path: mobile.png, full_page: true }
- id: perf
module: browser.performance
- id: save
module: file.write
params:
path: report.json
content: "${prices.result}"
- id: close
module: browser.close
No trace. No replay. No timing. If step 5 fails, re-run everything.
Full trace. Replay from any step. Per-step timing. Every run is debuggable.
site to url) and suggests alternatives when a non-existent module is requestedfields are specified, browser.extract now returns the text content of matched elements by default (previously returned empty objects)channel: 'chrome' to browser.launch to use the system-installed Chrome instead of bundled Chromium, useful for bypassing anti-bot detection on sites that fingerprint headless browsers| Category | Count | Examples |
|---|---|---|
browser.* |
38 | launch, goto, click, extract, screenshot, fill forms, wait |
flow.* |
24 | switch, loop, branch, parallel, retry, circuit breaker, rate limit |
array.* |
15 | filter, sort, map, reduce, unique, chunk, flatten |
string.* |
11 | reverse, uppercase, split, replace, trim, slugify, template |
api.* |
11 | OpenAI, Anthropic, Gemini, Notion, Slack, Telegram |
object.* |
10 | keys, values, merge, pick, omit, get, set, flatten |
image.* |
9 | resize, convert, crop, rotate, watermark, OCR, compress |
data.* |
8 | json/xml/yaml/csv parse and generate |
file.* |
8 | read, write, copy, move, delete, exists, edit, diff |
stats.* |
8 | mean, median, percentile, correlation, standard deviation |
validate.* |
7 | email, url, json, phone, credit card |
docker.* |
6 | run, ps, logs, stop, build, inspect |
archive.* |
6 | zip create/extract, tar create/extract, gzip, gunzip |
math.* |
6 | calculate, round, ceil, floor, power, abs |
k8s.* |
5 | get_pods, apply, logs, scale, describe |
crypto.* |
4 | AES encrypt/decrypt, JWT create/verify |
network.* |
4 | ping, traceroute, whois, port scan |
pdf.* |
4 | parse, extract text, merge, compress |
aws.s3.* |
4 | upload, download, list, delete |
google.* |
4 | Gmail send/search, Calendar create/list events |
cache.* |
4 | get, set, delete, clear (memory + Redis) |
ssh.* |
3 | remote exec, SFTP upload, SFTP download |
git.* |
3 | clone, commit, diff |
sandbox.* |
3 | execute Python, Shell, JavaScript |
dns.* |
1 | DNS lookup (A, AAAA, MX, CNAME, TXT, NS) |
monitor.* |
1 | HTTP health check with SSL cert verification |
See the Full Module Catalog for every module, parameter, and description.
| Playwright / Selenium | Shell scripts | flyto-core | |
|---|---|---|---|
| Step 8 fails | Re-run everything | Re-run everything | flyto replay --from-step 8 |
| What happened at step 3? | Add print(), re-run | Add echo, re-run | Full trace: input, output, timing |
| Browser + API + file I/O | Write glue code | 3 languages | All built-in |
| Share with team | "Clone my repo" | "Clone my repo" | pip install flyto-core |
| Run in CI | Wrap in pytest/bash | Fragile | flyto run workflow.yaml |
# Run a built-in recipe
flyto recipe site-audit --url https://example.com
# Run your own YAML workflow
flyto run my-workflow.yaml
# List all recipes
flyto recipes
pip install flyto-core
claude mcp add flyto-core -- python -m core.mcp_server
Or add to your MCP config:
{
"mcpServers": {
"flyto-core": {
"command": "python",
"args": ["-m", "core.mcp_server"]
}
}
}
Your AI gets all modules as tools.