flyto-core

flytohubApache-2.0活跃维护

面向 AI Agent 的浏览器自动化工作流引擎,通过 MCP Server 录制并回放执行过程,为 Agent 声称完成的任务提供可验证的证据。

AI said it finished. Flyto2 shows the proof.

v2.28.1发布于 2026-08-14 08:33 UTC483star85fork同步于 2026-11-10 23:57 UTC

怎么上手

由 README 提炼,执行前请确认
pip install "flyto-core[browser]"
playwright install chromium
flyto recipe competitor-intel --url https://github.com/pricing
硬件要求按 README 说明

README 未说明 CPU、内存或显存要求;机器人部分需真实 TurtleBot3 与 ROS 2/Nav2 环境,且整体硬件尚未完成端到端验收。

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

Flyto2 的 Python 执行引擎,把浏览器、API、文件等步骤串成可追溯的工作流

面向 AI Agent 的浏览器自动化工作流引擎,通过 MCP Server 录制并回放执行过程,为 Agent 声称完成的任务提供可验证的证据。

核心能力

  • 用 YAML 定义工作流并逐步执行
  • 内置 482 个模块与 41 个配方可直接调用
  • 记录每步执行结果,支持检查点与安全重放
  • 通过 MCP 把工具接入 AI 客户端
  • 用 ROS 2 适配器连接真实 TurtleBot3

容易踩的坑

浏览器相关功能需额外安装 browser 扩展并执行 playwright install chromium;MCP 方式需运行 python -m core.mcp_server 单独启动服务;操作物理设备需可信主机批准,且不同设备栈要另装对应 pack。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本v2.28.1
  1. v2.28.1flyto-core 2.28.1最新正式版2026-08-14 · 2026-08-14 08:33 UTC

    Security patch release closing four High-severity reports:

    • GHSA-jpmx-7xh3-vq6v: confine local image reads in vision modules.
    • GHSA-675h-j4qg-m52x: enforce dangerous permissions in nested Warroom/test steps.
    • GHSA-r3jp-qf98-23v8: make browser SSRF policy operator-controlled.
    • GHSA-x2qh-79wh-6w7j: confine email attachments and guard SMTP/IMAP hosts.

    Also expands registry-wide filesystem and outbound boundary coverage to beta and experimental modules.

  2. v2.28.0flyto-core v2.28.0 — IPv6 SSRF hardening and extension management2026-08-13 · 2026-08-13 01:19 UTC
    查看更新说明

    Security

    • Fixes an SSRF guard bypass in which the IPv6 unspecified address :: could reach services listening on IPv6 loopback. IPv4 and IPv6 unspecified addresses, including expanded IPv6 spellings, are now rejected by the shared address classifier and URL guard.
    • Affected versions: <= 2.27.0.
    • Patched version: 2.28.0.
    • Advisory: GHSA-gc4h-hj7x-gp5p.

    Highlights

    • Adds generic management for flyto-modules-* and flyto-plugin-* extensions, with authenticated install/uninstall routes, entry-point verification, rollback for failed new installs, and explicit restart requirements.
    • Strengthens plugin policy checks, lifecycle synchronization, registry snapshot consistency, and capability-manifest refresh behavior.
    • Keeps the generated tool catalog independent of locally installed third-party extensions.

    Upgrade with:

    python -m pip install --upgrade flyto-core==2.28.0
    

    See the changelog for the full release details.

  3. v2.27.0flyto-core v2.27.0 — boundary coverage enforcement2026-08-08 · 2026-08-08 01:57 UTC
    查看更新说明

    Registry-wide filesystem and outbound boundary coverage, enforced by tests rather than convention.

    This is a minor, not a patch. Two changes refuse inputs earlier releases accepted:

    • Paths outside FLYTO_SANDBOX_DIR (default: the process working directory) are refused by every module taking a caller-supplied path.
    • Connections to private or link-local hosts require FLYTO_ALLOWED_HOSTS or FLYTO_ALLOW_PRIVATE_NETWORK=true. Loopback is unaffected, so self-hosted Redis/MySQL/SMTP on localhost keeps working.

    See SECURITY_STATUS.md for every published advisory with the regression test covering it, and SECURITY.md for the environment variables that define both boundaries.


    Minor rather than patch: the two boundary changes below refuse inputs that previous releases accepted, so this is not a drop-in upgrade for every caller. Read the Changed section before upgrading.

    Security

    • Closed the filesystem sandbox boundary across the whole module registry rather than one report at a time. A registry-wide audit found every remaining module that took a caller-supplied path to a filesystem sink without validate_path_with_env_config, and confined all of them: testing.visual.compare (diff_path, and the expected/actual read paths — this module declares no required_permissions, so the write was unauthenticated), data.xml.parse (file_path, the sibling GHSA-wc94-386q-5478 missed), browser.upload and aws.s3.upload (file_path — host files shipped to a remote origin), ssh.sftp_upload and ssh.sftp_download (local_path, the SFTP counterpart of GHSA-hmq9-xw4w-7ppc), file.delete (file_path — arbitrary file deletion), file.exists (path — filesystem oracle), git.clone (destination), git.commit/git.diff (repo_path), llm.code_fix (source_files, where the previous '..' substring check let absolute paths through), verify.spec (ruleset_path), plus docker.build, process.start and sandbox.execute_shell as hardening. None of these were reported; they are the same CWE-22 shape as the published advisories.
    • Closed the outbound network boundary across the registry on the same basis. Added enforce_outbound_host and enforce_outbound_service_url to core/utils.py — the raw-TCP and non-HTTP-scheme counterparts of enforce_outbound_url, which only understands http(s) — and routed every module that reaches the network from a caller-supplied target through one of them: verify.run, verify.capture and verify.visual_diff (raw Playwright page.goto bypassing BrowserDriver._guard_navigation, and in visual_diff's case a bare playwright browser with no egress guard in any mode), browser.connect (ws_endpoint — CDP is remote code execution by design), browser.launch (proxy — the egress guard inspects request URLs, not where the proxy points), git.clone (url — the existing validator bounded the transport but never the destination), cache.* and queue.* (redis_url), db.mysql.query, db.redis.get/set, notification.email.send (smtp_server, which also carries SMTP credentials to whatever answers), ssh.exec/ssh.sftp_upload/ssh.sftp_download (host), network.ping, network.port_scan, network.traceroute, port.wait, and browser.emulate.
    • Deduplicated the host resolver that GHSA-v7q9-pr72-5fmv was about. port.check carried the only correct implementation (IP literals range-checked directly so IPv6 transition forms cannot skip the check, and fail-closed on resolution failure); it now lives in core/utils.py as resolve_guard_ip and backs every host-taking module.
    • Added tests/core/test_write_sink_coverage.py and tests/core/test_outbound_guard_coverage.py, which walk the module registry and fail the build if any module declares a p
  4. v2.26.11flyto-core v2.26.112026-08-02 · 2026-08-02 17:09 UTC
    查看更新说明
  5. v2.26.10Flyto2 Core v2.26.102026-07-23 · 2026-07-23 04:51 UTC
    查看更新说明

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    Try something.

    Say you want to check a website, grab screenshots, collect some data, and save a report.

    Run this:

    pip install "flyto-core[browser]"
    playwright install chromium
    flyto recipe competitor-intel --url https://github.com/pricing
    

    That's a real workflow. No agent prompt needed. It opens a browser, runs the steps, and saves the results.

    Want to poke around?

    flyto recipes                 # see the built-in workflows
    flyto modules                 # browse the tools
    flyto run your-workflow.yaml  # run your own
    

    There are 482 registered modules and 41 built-in recipes in the current Core inventory. Browser stuff, APIs, files, data, tests, and plenty more. Use what you need.

    And about that robot…

    We're already connecting Flyto2 to a real TurtleBot3 using ROS 2.

    The robot runs its normal ROS 2 / Nav2 stack. A separate adapter talks to it. Flyto2 handles the software steps and their execution records.

    No custom Flyto2 firmware on the robot. No motor drivers crammed into this repo.

    This isn't a claim that every robot is plug-and-play. The current combined setup still needs its full end-to-end hardware sign-off. But the ROS 2 adapter and real-robot development are already here.

    So what's in this repo?

    This is flyto-core, the Python execution engine behind Flyto2.

    You can call it from Python, run YAML workflows, use its local HTTP API, or hook it into an AI client through MCP.

    pip install flyto-core
    python -m core.mcp_server
    

    Your agent gets access to Core's tools. Moving a physical device still requires a trusted host to approve the action.

    Different device software stack? Different pack. That's how ROS 2 and other integrations stay separate without turning Core into a giant pile of device drivers.

    How do I know what actually happened?

    This part matters.

    When a workflow runs, Flyto2 keeps a record of each step. If something fails, you can inspect the run and use checkpoints or replay where it's safe to do so.

    And if a tool says “done”? Core can check the evidence it reports against the action's contract. It doesn't just throw away the trail once the command returns.

    That's it. Run something, see what happened, build the next thing.


    Website · Documentation · PyPI · YouTube · Issues

    Flyto2 is the product. flyto-core is the Python package. Licensed under Apache 2.0. Security reports: GitHub advisories.