MCPcopy Index your code
hub / github.com/bellingcat/octosuite

github.com/bellingcat/octosuite @5.1.0 sqlite

repository ↗ · DeepWiki ↗ · release 5.1.0 ↗
99 symbols 327 edges 15 files 98 documented · 99%
README

octosuite

Terminal-based toolkit for GitHub data analysis.

PyPI - Version PyPI - Downloads Code Size Release Date Build Status License

$ octosuite user torvalds
from pprint import pprint
import octosuite

user = octosuite.User(name="torvalds")
exists, profile = user.exists()

if exists:
    pprint(profile)

Installation

pip install octosuite

Usage

TUI (Interactive)

Launch the interactive terminal interface:

octosuite -t/--tui

Navigate using arrow keys and Enter to select options.

CLI

Query GitHub data directly from the command line:

# User data
octosuite user torvalds
octosuite user torvalds --repos --page 1 --per-page 50
octosuite user torvalds --followers --json

# Repository data
octosuite repo torvalds/linux
octosuite repo torvalds/linux --commits
octosuite repo torvalds/linux --stargazers --export ./data

# Organisation data
octosuite org github
octosuite org github --members --json

# Search
octosuite search "machine learning" --repos
octosuite search "python cli" --users --json

Common options:

  • --page - Page number (default: 1)
  • --per-page - Results per page, max 100 (default: 100)
  • --json - Output as JSON
  • --export DIR - Export to directory

Run octosuite <command> --help for available data type flags.

Library

Use octosuite in your Python projects:

from octosuite import User, Repo, Org, Search

# Get user data
user = User("torvalds")
exists, profile = user.exists()
if exists:
    repos = user.repos(page=1, per_page=100)
    followers = user.followers(page=1, per_page=50)

# Get repository data
repo = Repo(name="linux", owner="torvalds")
exists, profile = repo.exists()
if exists:
    commits = repo.commits(page=1, per_page=100)
    languages = repo.languages()

# Get organisation data
org = Org("github")
exists, profile = org.exists()
if exists:
    members = org.members(page=1, per_page=100)

# Search GitHub
search = Search(query="machine learning", page=1, per_page=50)
results = search.repos()

Features

Data Types

User: profile, repos, subscriptions, starred, followers, following, orgs, gists, events, received_events

Repository: profile, forks, issue_events, events, assignees, branches, tags, languages, stargazers, subscribers, commits, comments, issues, releases, deployments, labels

Organisation: profile, repos, events, hooks, issues, members

Search: repos, users, commits, issues, topics

Export Formats

  • JSON
  • CSV
  • HTML

Licence

MIT Licence. See the LICENCE file for details.

Core symbols most depended-on inside this repo

get
called by 62
src/octosuite/api/github.py
ascii_banner
called by 9
src/octosuite/app/lib.py
clear_screen
called by 7
src/octosuite/app/lib.py
set_menu_title
called by 5
src/octosuite/app/lib.py
prompt
called by 5
src/octosuite/app/tui/prompts.py
main
called by 5
src/octosuite/app/tui/menus.py
navigation_handler
called by 4
src/octosuite/app/tui/menus.py
output
called by 4
src/octosuite/app/cli/main.py

Shape

Method 75
Function 13
Class 11

Languages

Python100%

Modules by API surface

src/octosuite/api/models.py50 symbols
src/octosuite/app/tui/menus.py14 symbols
src/octosuite/api/cache.py8 symbols
src/octosuite/app/lib.py7 symbols
src/octosuite/app/tui/dialogs.py6 symbols
src/octosuite/api/github.py5 symbols
src/octosuite/app/tui/prompts.py4 symbols
src/octosuite/app/cli/main.py3 symbols
src/octosuite/app/tui/__init__.py1 symbols
src/octosuite/app/main.py1 symbols

Dependencies from manifests, versioned

pyfiglet1.0.4 · 1×
questionary2.1.1 · 1×
rich14.3.3 · 1×
update-checker0.18.0 · 1×

For agents

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

⬇ download graph artifact