Skip to content

๐Ÿค 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).

GitHub Integration

Connect any GitHub repository โ€” HTTPS or SSH โ€” from the sidebar Git panel

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.

# Or connect via CLI
fml-notebook start --server https://your-flowyml-instance.com

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:

your-repo/
โ”œโ”€โ”€ .flowyml-hub/
โ”‚   โ”œโ”€โ”€ notebooks/              # Shared notebooks
โ”‚   โ”‚   โ””โ”€โ”€ {project}/
โ”‚   โ”‚       โ””โ”€โ”€ {experiment}/
โ”‚   โ”‚           โ”œโ”€โ”€ notebook.fml.json    # Full notebook data
โ”‚   โ”‚           โ””โ”€โ”€ metadata.json        # Version, author, cell count
โ”‚   โ”œโ”€โ”€ recipes/                # Shared recipe catalog
โ”‚   โ”‚   โ”œโ”€โ”€ catalog.json        # Recipe index
โ”‚   โ”‚   โ””โ”€โ”€ {category}/
โ”‚   โ”‚       โ””โ”€โ”€ {recipe-name}.json
โ”‚   โ””โ”€โ”€ config.json             # Hub settings (version, FlowyML server URL)
โ”œโ”€โ”€ your-notebooks.py           # Your .py notebook files
โ””โ”€โ”€ ...

Push & Pull Notebooks

Push

Save your notebook to the shared repository:

  1. Make your changes in the notebook editor
  2. Open the Git panel in the sidebar
  3. Click Push โ€” this commits your notebook as notebook.fml.json with 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:

  1. Open the Git panel
  2. Click Pull โ€” this runs git pull --rebase and 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:

  1. Open the Git panel
  2. Click New Branch โ†’ Enter a name (e.g., experiment/custom-loss)
  3. 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.).

1
2
3
4
5
# Example workflow
git checkout -b experiment/new-model
# ... work in FlowyML Notebook ...
git push origin experiment/new-model
# โ†’ Open a PR on GitHub โ†’ Review โ†’ Merge

Version History & Snapshots

History & Snapshots

Browse notebook history with snapshot timestamps, cell counts, and restore options

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

  1. Open the History tab in the sidebar
  2. Browse snapshots sorted by timestamp
  3. Click any snapshot to see the notebook state at that point
  4. 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.

Recipes Panel

39 built-in recipes plus your team's custom shared catalog

Push a Recipe

  1. Write a cell with a useful pattern
  2. Click "Save as Recipe" in the cell toolbar
  3. Set a Name, Category, and Description
  4. 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:

1
2
3
4
5
6
7
8
.flowyml-hub/recipes/
โ”œโ”€โ”€ catalog.json                 # Auto-generated index
โ”œโ”€โ”€ core/
โ”‚   โ””โ”€โ”€ flowyml-step.json
โ”œโ”€โ”€ ml/
โ”‚   โ””โ”€โ”€ xgboost-baseline.json
โ””โ”€โ”€ data/
    โ””โ”€โ”€ s3-data-loader.json

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

Comments

Inline comments panel with threaded discussions, resolve/reply, and direct cell annotation

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:

# Conceptual structure
.flowyml-hub/notebooks/
โ”œโ”€โ”€ fraud-detection/
โ”‚   โ”œโ”€โ”€ baseline-xgboost/
โ”‚   โ”œโ”€โ”€ feature-engineering-v2/
โ”‚   โ””โ”€โ”€ production-model/
โ”œโ”€โ”€ recommendation-engine/
โ”‚   โ”œโ”€โ”€ collaborative-filtering/
โ”‚   โ””โ”€โ”€ content-based/
โ””โ”€โ”€ data-quality/
    โ””โ”€โ”€ monthly-report/

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:

  1. โœ Create a new notebook in FlowyML
  2. ๐Ÿ”— Connect to your team's GitHub repository
  3. ๐Ÿ”€ Branch โ€” Create experiment/my-analysis
  4. ๐Ÿงช Develop โ€” Write, run, iterate with reactive execution
  5. โฌ† Push โ€” Commit notebook + metadata to GitHub
  6. ๐Ÿง‘โ€๐Ÿณ Share โ€” Push useful patterns as shared recipes
  7. ๐Ÿ” Review โ€” Open a PR on GitHub for team review
  8. โœ… Merge โ€” After approval, merge to main
  9. โฌ‡ Pull โ€” 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.