-
-
Notifications
You must be signed in to change notification settings - Fork 1
Home
📝 This wiki is auto-synced from
docs/wikiin the main repository. Do not edit pages here — changes will be overwritten on the next sync. Edit via PR instead.
F-Mesh (aka FMesh or fmesh) is a Golang framework inspired by FBP (Flow-Based Programming) that enables the creation of data flow networks using interconnected components, each processing signals. Components may have multiple inputs and outputs called "ports" linked via type-agnostic pipes.
F-Mesh provides extension mechanisms including hooks (observability), labels and scalars (metadata), and collections/groups (working with multiple entities).
go get github.com/hovsep/fmesh
F-Mesh releases are named after 17 historical capitals of Armenia, honouring the ancient cities that played foundational roles in Armenian history. This tradition highlights the project's growth with each version, paralleling Armenia's own historical progression.
F-Mesh follows semantic versioning, with one caveat while the project is pre-production: minor versions may contain breaking changes. Breaking changes are listed explicitly per release in CHANGELOG.md. Pin an exact version if that matters to you.
Release tags are plain semver (v1.12.0); the Armenian capital naming lives in the release
title, because a tag suffix would make Go treat the release as a pre-release and hide it from
go get. See releases page.
| Topic | Page |
|---|---|
| Quick start | 101. Quick start |
| Signals | 201. Signals |
| Labels & scalars | 202. Metadata |
| Collections & groups | 203. Collections and Groups |
| Components | 301. Component |
| Ports | 302. Ports |
| Pipes | 303. Pipes |
| Running the mesh | 401. Scheduling rules |
| Inspecting a run | 402. Inspecting a run |
| Hooks | 501. Hooks |
| Plugins | 502. Plugins |
| Configuration & tips | 601. Tips & tricks |
| Patterns & recipes | 602. Patterns & recipes |
| Caveats & trade-offs | 603. Caveats |
| Export / visualization | 701. Export |
- FMesh — mesh, config, hooks
- Component
- Port
- Signal
- Meta (labels & scalars)
- profiler (separate module)
- autowire (bundled mesh plugin)
The cycle package surfaces in the run-time report — see 402. Inspecting a run; hooks are covered in 501. Hooks.
fmesh-examples — runnable programs, from single-file demos to full applications. Highlights:
- pipeline — text-processing pipeline with a generic stage-chaining builder
- filter — label-based content routing
- fibonacci — feedback-loop generator via loopback pipes
- electric_circuit — stateful two-component feedback loop with natural termination
- load_balancer — round-robin dispatch/collect with indexed ports
- async_input — driving a mesh from live external input (HTTP crawler)
- nesting — a mesh running inside a component
- can_bus — broadcast bus topology; the advanced variant models a full CAN protocol stack
- simulation — interactive REPL-driven step simulation harness
- life — large tick-driven physiological simulation with nested meshes and a live TUI
- graphviz — static and per-cycle graph export
The techniques these examples demonstrate are cataloged in 602. Patterns & recipes.