Collaboration
FlowyML Notebook uses GitHub as its collaboration backend. No proprietary cloud, no database, no account signup โ just a shared Git repository that your team already knows how to use.
Why GitHub?
Design Philosophy
Most notebook platforms require a cloud database for collaboration. FlowyML Notebook takes a different approach: your team's GitHub repository IS the collaboration backend. This means:
- Zero infrastructure โ No servers to maintain, no databases to back up
- Native Git workflows โ Branch, merge, review, and resolve conflicts with tools you already know
- Full ownership โ Your notebooks, recipes, and metadata live in your own repository
- Offline-first โ Work locally, sync when you're ready
Getting Started
Step 1: Connect a Repository
Open the Git tab in the sidebar and enter your GitHub repository URL (HTTPS or SSH).
FlowyML will either clone the repository (if it's new) or reuse an existing local clone. The connection is stored locally at ~/.flowyml/github.json.
Step 2: Start Collaborating
Once connected, FlowyML creates a .flowyml-hub directory inside the repository. This is the lightweight sync layer that powers all collaboration features:
Push & Pull Notebooks
Push
Save your notebook to the shared repository:
- Make your changes in the notebook editor
- Open the Git panel in the sidebar
- Click Push โ this commits your notebook as
notebook.fml.jsonwith metadata and pushes to GitHub
Every push automatically tracks:
- Version number โ Incrementing counter per notebook
- Timestamp โ When the push occurred
- Author โ The Git user who pushed
- Cell count โ Number of cells in the notebook
Pull
Get the latest version from your teammates:
- Open the Git panel
- Click Pull โ this runs
git pull --rebaseand loads the latest notebook state
Conflict Resolution
Since notebooks are stored as JSON (and your .py files are pure Python), Git handles conflict resolution natively. No proprietary merge tools needed.
Branching & Experiments
Use Git branches to isolate experiments โ just like feature branches in software development.
Create a Branch
From the notebook sidebar:
- Open the Git panel
- Click New Branch โ Enter a name (e.g.,
experiment/custom-loss) - FlowyML switches to the new branch automatically
Switch Branches
Toggle between branches to compare different experiment versions or switch contexts between team members' work.
Merge Results
When your experiment succeeds, merge it back to main using your existing Git workflow (GitHub PRs, CLI, etc.).
Version History & Snapshots
FlowyML saves snapshots of your notebook at key moments:
- Manual snapshots โ Save a checkpoint whenever you want
- Auto-save on push โ Every push creates a versioned snapshot
- Cell-level diffs โ See exactly which cells changed between versions
Browsing History
- Open the History tab in the sidebar
- Browse snapshots sorted by timestamp
- Click any snapshot to see the notebook state at that point
- Restore a previous version with one click
Shared Recipes
Turn your best code patterns into shared team recipes โ reusable templates that every teammate can access.
Push a Recipe
- Write a cell with a useful pattern
- Click "Save as Recipe" in the cell toolbar
- Set a Name, Category, and Description
- Toggle "Share to Hub" โ The recipe is committed and pushed to your GitHub repository
Shared recipes appear in the Shared tab of the Recipes panel for all team members.
Pull Team Recipes
When a teammate shares a recipe, just click Pull in the Git panel. The shared recipe catalog refreshes automatically:
Each recipe in the catalog tracks:
| Field | Description |
|---|---|
name |
Recipe display name |
category |
Organizational category (Core, ML, Data, etc.) |
description |
What the recipe does |
tags |
Searchable tags |
shared_by |
Git user who shared it |
shared_at |
Timestamp of sharing |
Comments & Review
Collaborate in context with inline comments:
- Notebook-level comments โ General discussion about the analysis
- Cell-level annotations โ Target specific code, outputs, or data
- Threaded replies โ Keep conversations organized
- Resolve โ Mark completed discussions to declutter
Projects & Organization
FlowyML organizes shared notebooks into a project โ experiment hierarchy:
Listing Projects
The sidebar shows all projects and experiments from the shared repository, with metadata:
| Metadata | Description |
|---|---|
| Experiment name | Directory name in the hub |
| Last updated | Timestamp of most recent push |
| Updated by | Git username of last author |
| Cell count | Number of cells in the notebook |
| Version | Incrementing version counter |
Complete Workflow Example
Here's a typical team collaboration workflow:
graph LR
A[Create Notebook] --> B[Connect GitHub Repo]
B --> C[Create Branch]
C --> D[Develop & Experiment]
D --> E[Push Notebook]
E --> F[Share Recipes]
F --> G[Open PR on GitHub]
G --> H[Team Review]
H --> I[Merge to Main]
I --> J[Teammates Pull]
Step-by-step:
Create a new notebook in FlowyML
Connect to your team's GitHub repository
Branch โ Create
experiment/my-analysisDevelop โ Write, run, iterate with reactive execution
Push โ Commit notebook + metadata to GitHub
Share โ Push useful patterns as shared recipes
Review โ Open a PR on GitHub for team review
Merge โ After approval, merge to
mainPull โ Teammates pull the latest notebooks and recipes
No Git Knowledge Required
While power users can use Git directly, the sidebar UI handles all Git operations (push, pull, branch, switch) with one click. Your data scientists don't need to know Git internals.