MCPcopy Create free account
hub / github.com/dawedawe/ferriby

github.com/dawedawe/ferriby @v0.4.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.4.0 ↗ · + Follow
77 symbols 145 edges 9 files 17 documented · 22% updated 27d agov0.4.0 · 2025-09-11★ 363 open issues

Browse by type

Functions 64 Types & classes 13
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

ferriby

Keep Ferrises alive and happy by feeding them commits in your repositories.
They can live in a local repository, at GitHub, any Forgejo instance like Codeberg or at a GitLab instance.

Ferriby demo recording

Usage

ferriby -fj https://example.org/owner/repository # Forgejo repository
ferriby -g path_to_local_repository # local git repository
ferriby -gh owner/repository # GitHub repository
ferriby -gl gitlab.example.org/12345/projectname # GitLab repository

You can use ferriby with multiple repositories at once:

ferriby -g local_path -gh owner/repo -g other_path -gh ...

Use a custom config file path:

ferriby -c config_file.json

Installation

You can install ferriby from crates.io:

cargo install ferriby

On Arch Linux, you can install it from the AUR:

paru -S ferriby

Configuration

Forgejo/Codeberg

Use the env var FERRIBY_FJ_PAT for Forgejo instances like Codeberg. Create your PAT in the settings/applications section with the repository permission set to Read. Please be aware that a Forgejo PAT in the env overwrites the PATs for all Forgejo instances in the config file. So if you have different Forgejo instances in your config, you should not use a PAT in the env.

GitHub

To access private GitHub repos and to have a higher rate limit for the checks, you can pass a PAT (Personal Access Token) to ferriby via the environment variable FERRIBY_GH_PAT.
Create your PAT in the settings section with Repository permissions of Read. Test it with

FERRIBY_GH_PAT="xyz" ferriby -gh owner/repository

It is strongly recommended to do this. Otherwise you are rate limited to 60 checks per hour.

GitLab

Use the env var FERRIBY_GL_PAT for GitLab. Please be aware that a GitLab PAT in the env overwrites the PATs for all GitLab instances in the config file. So if you have different GitLab instances in your config, you should not use a PAT in the env.

As GitLab uses numeric IDs to identify repositories in their API, we need to provide that. You can find that in the project settings. The projectname is just for us mortals and can include the user or group, too (see the config file example). You can define a project-specific PAT in the config. It only needs the read_api scope. If you want to use gitlab.com, don't include the "www" in the config.

Config file

ferriby looks for a config file in $HOME/.config/ferriby/config.json ($HOME/AppData/Roaming/ferriby/config.json on Windows). You can override that path with the -c argument. The config file should look like this:

{
  "git": [
    "/home/dawe/src/ferriby",
    "/home/dawe/src/tusistor"
  ],
  "github": [
    "dawedawe/ratatui",
    "dawedawe/ratzilla"
  ],
  "forgejo": [
    {
      "baseurl": "https://codeberg.org",
      "repo": "dawe/ferriby",
      "pat": "fjpat-123"
    },
    {
      "baseurl": "http://localhost:3000",
      "repo": "dawe/ferriby"
    }
  ],
  "gitlab": [
    {
      "hostname": "gitlab.com",
      "projectid": "71627370",
      "projectname": "ferriby",
      "pat": "glpat-123"
    },
    {
      "hostname": "gitlab.archlinux.org",
      "projectid": "98879",
      "projectname": "dawe/signstar"
    }
  ]
}

At least one repository needs to be configured. The JSON needs to be clean, no trailing commas allowed.

Advisory

This is gamification. If you have a human to love or a dog to walk, do that!

Credits

The ASCII art is based on work by Diggory Blake. Thanks!

This is a Ratatui app generated by the event driven async template.

License

Copyright (c) dawe dawedawe@posteo.de

This project is licensed under the MIT license (LICENSE or http://opensource.org/licenses/MIT)

Extension points exported contracts — how you extend this code

browse all types & interfaces →

Core symbols most depended-on inside this repo

browse all functions →

Shape

Method 34
Function 30
Class 8
Enum 4
Interface 1

Languages

Rust100%

Modules by API surface

ferriby/src/app.rs21 symbols
ferriby/src/main.rs20 symbols
ferriby/src/event.rs13 symbols
ferriby/src/forgejo.rs7 symbols
ferriby/src/ui.rs5 symbols
ferriby/src/gitlab.rs4 symbols
ferriby/src/github.rs4 symbols
ferriby/src/git.rs2 symbols
ferriby/src/githoster.rs1 symbols

For agents

$ claude mcp add ferriby \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page