{"id":21924627,"url":"https://github.com/anistark/sot","last_synced_at":"2026-01-18T13:01:19.424Z","repository":{"id":264658358,"uuid":"892332700","full_name":"anistark/sot","owner":"anistark","description":"Command-line System Obervation Tool","archived":false,"fork":false,"pushed_at":"2026-01-17T18:53:55.000Z","size":4219,"stargazers_count":38,"open_issues_count":7,"forks_count":3,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-01-18T05:04:18.316Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://pypi.org/project/sot/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/anistark.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-11-21T23:12:48.000Z","updated_at":"2026-01-17T18:51:35.000Z","dependencies_parsed_at":"2025-04-19T15:51:33.370Z","dependency_job_id":"7f2e87e7-9e8b-4270-ba0e-ffaead508c91","html_url":"https://github.com/anistark/sot","commit_stats":null,"previous_names":["anistark/sot"],"tags_count":18,"template":false,"template_full_name":null,"purl":"pkg:github/anistark/sot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anistark%2Fsot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anistark%2Fsot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anistark%2Fsot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anistark%2Fsot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/anistark","download_url":"https://codeload.github.com/anistark/sot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anistark%2Fsot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28536686,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-18T10:13:46.436Z","status":"ssl_error","status_checked_at":"2026-01-18T10:13:11.045Z","response_time":98,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-28T21:15:16.174Z","updated_at":"2026-01-18T13:01:19.408Z","avatar_url":"https://github.com/anistark.png","language":"Python","funding_links":[],"categories":["Table of Contents"],"sub_categories":[],"readme":"\u003cp align=\"center\" style=\"background-color: #ffffff;\"\u003e\n  \u003ca href=\"https://github.com/anistark/sot\"\u003e\u003cimg alt=\"sot\" src=\"https://raw.githubusercontent.com/anistark/sot/refs/heads/main/images/sot.png\" width=\"200px\"/\u003e\u003c/a\u003e\n  \u003cp align=\"center\"\u003eCommand-line system obervation tool.\u003c/p\u003e\n\u003c/p\u003e\n\n`sot` is a Command-line System Obervation Tool in the spirit of [top](\u003chttps://en.wikipedia.org/wiki/Top_(software)\u003e). It displays various interesting system stats and graphs them. Works on all operating systems.\n\n[![PyPI - Version](https://img.shields.io/pypi/v/sot)](https://pypi.org/project/sot/) [![PyPI Downloads](https://static.pepy.tech/badge/sot/month)](https://pypi.org/project/sot/) ![PyPI - Status](https://img.shields.io/pypi/status/sot) [![Open Source](https://img.shields.io/badge/open-source-brightgreen)](https://github.com/anistark/sot) [![Contributors](https://img.shields.io/github/contributors/anistark/sot)](https://github.com/anistark/sot/graphs/contributors) ![maintenance-status](https://img.shields.io/badge/maintenance-actively--developed-brightgreen.svg) [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n\n## Installation\n\n![Python](https://img.shields.io/badge/python-3670A0?style=for-the-badge\u0026logo=python\u0026logoColor=ffdd54)\n\n### Quick Install (Recommended)\n\n**One-line installer for macOS and Linux** - Automatically detects your environment and installs all dependencies:\n\n\u003c!--pytest-codeblocks: skip--\u003e\n\n```sh\ncurl -fsSL https://raw.githubusercontent.com/anistark/sot/main/install.sh | bash\n```\n\nThis script will:\n- ✅ Detect your operating system\n- ✅ Check for Python 3.10+ (installs if missing)\n- ✅ Install pipx (if not present)\n- ✅ Install sot and configure PATH\n- ✅ Verify the installation\n\n**Note:** This installation script does not work on Windows. Windows users should use one of the [alternative installation methods](#alternative-installation-methods) below.\n\n---\n\n### Alternative Installation Methods\n\n\u003cdetails\u003e\n\u003csummary\u003eUsing brew\u003c/summary\u003e\n\n\u003c!--pytest-codeblocks: skip--\u003e\n\n```sh\nbrew tap anistark/tools\nbrew install sot\n```\n\nOr single line:\n\n\u003c!--pytest-codeblocks: skip--\u003e\n\n```sh\nbrew install anistark/tools/sot\n```\n\nUpdate using:\n\n\u003c!--pytest-codeblocks: skip--\u003e\n\n```sh\nbrew update \u0026\u0026 brew upgrade sot\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eUsing uv\u003c/summary\u003e\n\nInstall and run with [`uv`](https://github.com/astral-sh/uv):\n\n\u003c!--pytest-codeblocks: skip--\u003e\n\n```sh\nuv tool install sot\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eUsing pipx\u003c/summary\u003e\n\nInstall and run with [`pipx`](https://github.com/pypa/pipx). Setup pipx before proceeding.\n\n\u003c!--pytest-codeblocks: skip--\u003e\n\n```sh\npython3 -m pipx install sot\npython3 -m pipx ensurepath\nsudo pipx ensurepath --global\n```\n\nor in single line:\n\n\u003c!--pytest-codeblocks: skip--\u003e\n\n```sh\npython3 -m pipx install sot \u0026\u0026 python3 -m pipx ensurepath \u0026\u0026 sudo pipx ensurepath --global\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eUsing DEB Package (Experimental - Debian/Ubuntu)\u003c/summary\u003e\n### Using DEB Package (Experimental - Debian/Ubuntu)\n\n**⚠️ Experimental**: DEB packages are experimental. Use `uv` or `pipx` for recommended installation.\n\nDownload the latest DEB package from the [releases page](https://github.com/anistark/sot/releases) and install:\n\n\u003c!--pytest-codeblocks: skip--\u003e\n\n```sh\n# Download latest .deb file from releases\nwget https://github.com/anistark/sot/releases/latest/download/sot-*.deb\n\n# Install the package\nsudo dpkg -i sot-*.deb\n\n# Install any missing dependencies (if needed)\nsudo apt-get install -f\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eUsing RPM Package (Experimental - RHEL/CentOS/Fedora)\u003c/summary\u003e\n\n**⚠️ Experimental**: RPM packages are experimental. Use `uv` or `pipx` for recommended installation.\n\nDownload the latest RPM package from the [releases page](https://github.com/anistark/sot/releases) and install:\n\n\u003c!--pytest-codeblocks: skip--\u003e\n\n```sh\n# Download latest .rpm file from releases\nwget https://github.com/anistark/sot/releases/latest/download/sot-*.rpm\n\n# Install the package\nsudo rpm -ivh sot-*.rpm\n```\n\n### Verifying Package Signatures (Recommended)\n\nFor enhanced security, verify GPG signatures before installing packages:\n\n\u003c!--pytest-codeblocks: skip--\u003e\n\n```sh\n# Import the public signing key (one time setup)\ncurl -fsSL https://github.com/anistark/sot/releases/latest/download/public-key.asc | gpg --import\n\n# For DEB packages:\ndpkg-sig --verify sot-*.deb\n# Or verify using detached signature\ngpg --verify sot-*.deb.asc sot-*.deb\n# Verify checksums\ngpg --verify SHA256SUMS.sig \u0026\u0026 sha256sum -c SHA256SUMS\n\n# For RPM packages:\ngpg --verify sot-*.rpm.asc sot-*.rpm\n# Verify checksums\ngpg --verify SHA256SUMS-RPM.sig \u0026\u0026 sha256sum -c SHA256SUMS-RPM\n```\n\n**GPG Key Fingerprint:** `DCD1 9CA3 2C3F ACAA 1360  1C78 F4D7 EFDB 552E 84C9`\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eInstall from source\u003c/summary\u003e\n\nFor testing or installing the latest version from source directly on your system.\n\n**Using uv (Recommended):**\n\n\u003c!--pytest-codeblocks: skip--\u003e\n\n```sh\n# Clone the repository\ngit clone https://github.com/anistark/sot.git\ncd sot\n\n# Install from source (system-wide)\nuv pip install --system .\n\n# Run from anywhere\nsot\n```\n\n**Using pipx:**\n\n\u003c!--pytest-codeblocks: skip--\u003e\n\n```sh\n# Clone the repository\ngit clone https://github.com/anistark/sot.git\ncd sot\n\n# Install from source using pipx\npipx install .\n\n# Run from anywhere\nsot\n```\n\u003c/details\u003e\n\n---\n\nRun with:\n\n\u003c!--pytest-codeblocks: skip--\u003e\n\n```sh\nsot\n```\n\n![sot-demo](https://github.com/user-attachments/assets/780449fd-27e0-40ee-ae9a-7527bf99d7de)\n\n---\n\n## Features\n\n### System\n\n- CPU Usage\n  - Per Core and Thread level\n- Processes with ID, threads, memory and cpu usage\n  - **Interactive Order By**: Press `O` to enter order by mode, navigate columns with arrow keys, toggle sort direction with Enter (DESC ↓ → ASC ↑ → OFF → cycle)\n\n### Disk\n\n- **Interactive Disk TUI** - View all physical disks with partitions\n  - Real-time disk usage monitoring with accurate APFS container calculations\n  - Visual usage bars and percentage indicators\n  - I/O statistics (read/write counts and bytes)\n- Disk Usage\n  - Per Read/Write\n- Capacity\n  - Free\n  - Used\n  - Total\n  - Percent\n\n### Memory\n\n- Memory Usage\n- Capacity\n  - Free\n  - Available\n  - Used\n  - Swap\n\n### Network\n\n- Local IP\n- Upload/Download Speed\n- Bandwidth\n- Network Usage\n- **Select Interface**: Use `--net` / `-N` to monitor a specific network interface\n\n### Options\n\n- **Disk Selection**: Use `--disk` / `-D` to monitor a specific volume\n  - `sot --disk` - Interactive picker with arrow keys\n  - `sot --disk /Volumes/External` - Monitor specific volume\n\n---\n\n## System Information\n\nThe `sot info` command displays comprehensive system information with a beautiful OS-specific ASCII logo.\n\n### Usage\n\n```sh\nsot info\n```\n\n### Example Output\n\n```\n                  ,MMMM.            Host        -  john@macbook.local\n                .MMMMMM             Model       -  MacBook Pro\n                MMMMM,              SKU         -  MK1E3LL/A\n      .;MMMMM:' MMMMMMMMMM;.        Identifier  -  MacBookPro18,1\n    MMMMMMMMMMMMNWMMMMMMMMMMM:      Serial      -  C02YX2QZMD6R\n  .MMMMMMMMMMMMMMMMMMMMMMMMWM.\n  MMMMMMMMMMMMMMMMMMMMMMMMM.        OS          -  macOS 14.5.0 Sonoma\n ;MMMMMMMMMMMMMMMMMMMMMMMM:         Kernel      -  23.5.0\n :MMMMMMMMMMMMMMMMMMMMMMMM:         Firmware    -  10151.121.3\n .MMMMMMMMMMMMMMMMMMMMMMMMM.        DE          -  Aqua\n  MMMMMMMMMMMMMMMMMMMMMMMMMMM.      WM          -  Quartz Compositor\n   .MMMMMMMMMMMMMMMMMMMMMMMMMM.     Shell       -  zsh\n     MMMMMMMMMMMMMMMMMMMMMMMM       Terminal    -  iTerm.app (3.5.2)\n      ;MMMMMMMMMMMMMMMMMMMM.\n        .MMMM,.    .MMMM,.          Chip        -  Apple M1 Pro (8P + 2E cores)\n                                    GPU         -  Apple M1 Pro (16 cores)\n                                    Memory      -  8 GiB / 32 GiB\n\n                                    Displays    -  2560 x 1600 Retina (Color LCD)\n                                                   3840 x 2160@60.00Hz (Dell U2720Q)\n\n                                    Uptime      -  12d 4h 23m\n                                    Battery     -  87% \u0026 Discharging\n```\n\n### Features\n\nThe info command displays detailed system information organized into logical sections:\n\n**System Information**\n- Host (user@hostname)\n- Model name (e.g., MacBook Pro)\n- SKU/Model number\n- Model identifier\n- Serial number\n\n**Software**\n- Operating system with version name (e.g., macOS 15.6.1 Sequoia)\n- Kernel version\n- Firmware version\n- Desktop Environment (DE)\n- Window Manager (WM)\n- Shell\n- Terminal emulator\n\n**Hardware**\n- Chip details with performance/efficiency core breakdown (e.g., Apple M1 Pro with 6P + 2E cores)\n- GPU model with core count\n- Memory (used / total)\n\n**Displays**\n- All connected displays with resolutions, refresh rates, and display names\n- Screen brightness (when available)\n\n**Status**\n- System uptime\n- Battery status (percentage and charging state)\n\n### OS-Specific Logos\n\nThe command automatically detects your operating system and distribution, displaying the appropriate ASCII logo:\n\n**macOS**: Apple logo\n\n**Linux Distributions**:\n- Ubuntu\n- Debian\n- Fedora\n- Red Hat / RHEL\n- Arch Linux\n- Manjaro\n- Pop!_OS\n- CentOS\n- Generic Linux/Tux (fallback)\n\n**Windows**: Windows logo\n\n---\n\n## System Cleanup\n\nThe `sot clean` command performs a deep clean of your system by removing caches, logs, and temporary files.\n\n### Usage\n\n```sh\n# Interactive mode - shows what can be cleaned and asks for confirmation\nsot clean\n\n# Dry run - preview what would be cleaned without deleting\nsot clean --dry-run\n```\n\n### What Gets Cleaned\n\nThe clean command intelligently detects your operating system and cleans platform-specific locations:\n\n**macOS:**\n- Application caches (`~/Library/Caches`)\n- Application logs (`~/Library/Logs`)\n- Homebrew package cache\n- System temporary files (`/tmp`)\n- Browser caches (Chrome, Safari, Firefox)\n- Python pip cache\n- npm cache\n- Trash bin\n\n**Linux:**\n- User cache (`~/.cache`)\n- Thumbnails cache\n- System temporary files (`/tmp`, `/var/tmp`)\n- Package manager caches (APT, DNF, Yum)\n- Browser caches\n- Python pip cache\n- npm cache\n\n**Windows:**\n- User temporary files (`%TEMP%`)\n- Windows temporary files\n- Prefetch files\n- Browser caches\n- Python pip cache\n- npm cache\n\n### Permissions\n\nSome cleaning targets require elevated privileges (sudo/administrator). The clean command will:\n- Show which items require elevated privileges in the summary\n- Skip these items during cleaning if not running with sudo\n- Provide clear notifications about what was skipped\n\nTo clean items requiring sudo:\n```sh\nsudo sot clean\n```\n\n### Safety Features\n\n- **Dry run mode**: Preview what will be cleaned without making changes\n- **Interactive confirmation**: Always asks before deleting files\n- **Clear reporting**: Shows exactly what will be cleaned and how much space will be freed\n- **Graceful error handling**: Skips files that can't be accessed rather than failing\n\n---\n\n## Process Viewer\n\nThe `sot ps` command provides an interactive terminal-based process viewer with three synchronized panels for comprehensive system monitoring.\n\n### Usage\n\n```sh\nsot ps\n```\n\n### Features\n\nThe process viewer displays three interactive panels:\n\n**Process List**:\n- All running processes with PID, name, memory usage, and CPU percentage\n- Navigate with arrow keys (↑/↓)\n- Sortable columns (same as main `sot` interface)\n- Real-time updates every 2 seconds\n- Shows up to 500 processes\n\n**Listening Ports**:\n- All open ports listening for connections\n- Shows port number, bind address, process name, and PID\n- Useful for identifying which services are running on which ports\n- Updates every 3 seconds\n- **Note**: May require sudo on macOS for full port detection\n\n**Development Environment**:\n- Automatically detects running development servers\n- Supports: Node.js, Python, Docker, Ruby, Go, Rust\n- Shows process count, listening ports, CPU and memory usage per environment type\n- Groups related processes (e.g., all Node processes together)\n- Updates every 5 seconds\n\n### Navigation\n\n- **Tab**: Switch focus between panels\n- **↑/↓**: Navigate within focused panel\n- **Q**: Quit\n\n### Example\n\nThe process viewer is particularly useful for developers who want to:\n- Monitor development server resource usage\n- Identify which process is using a specific port\n- Track multiple development environments running simultaneously\n- Debug port conflicts quickly\n\n---\n\n## Disk Benchmarking\n\nThe `sot bench` command allows you to measure disk performance with comprehensive benchmarks including sequential throughput, random IOPS, and latency distribution.\n\n### Interactive Mode (Default)\n\n```sh\nsot bench\n```\n\nThis will display available disks and let you select one to benchmark interactively.\n\n### Benchmark Options\n\n```sh\n# Benchmark with default 10 second duration per test\nsot bench\n\n# Specify custom duration (in seconds)\nsot bench --duration 5     # Quick 5-second benchmark\nsot bench -d 30            # Longer 30-second benchmark for more stable results\n\n# Specify custom output file\nsot bench --output results.json\n\n# Combine options\nsot bench --duration 20 --output bench_results.json\n```\n\n### Benchmark Tests\n\nThe benchmarking tool runs four comprehensive tests:\n\n1. **Sequential Read** - Measures sustained read throughput (MB/s)\n2. **Sequential Write** - Measures sustained write throughput (MB/s)\n3. **Random Read IOPS** - Measures random read operations per second\n4. **Random Write IOPS** - Measures random write operations per second\n\nEach test runs for the specified duration (default: 10 seconds) and provides detailed metrics:\n- Throughput/IOPS measurements\n- Min/Avg/Max latencies\n- p50, p95, p99 percentile latencies\n- Total test duration\n\n### Duration Parameter\n\nThe `--duration` flag controls how long each test runs:\n- **Default: 10 seconds** - Quick, reliable measurements for most use cases\n- **Shorter durations (5s)** - Very quick benchmarks for rapid testing\n- **Longer durations (30s+)** - More stable results, accounts for system variance better\n\n---\n\nFor all options, see\n\n\u003c!--pytest-codeblocks:skipif(sys.version_info \u003c (3, 10))--\u003e\n\n```sh\nsot -H\n```\n\n\u003c!--pytest-codeblocks: expected-output--\u003e\n\n```\nusage: sot [--help] [--version] [--log LOG] [--net NET] [--disk [DISK]]\n           {info,bench,disk,clean,ps} ...\n\nCommand-line System Obervation Tool ≈\n\ncommands: {info,bench,disk,clean,ps}\n    info                Display system information\n    bench               Disk benchmarking\n    disk                Interactive disk information viewer\n    clean               Deep clean system caches, logs, and temp files\n    ps                  Interactive process viewer with ports and dev environment\n\noptions:\n  --help, -H                Show this help message and exit.\n  --version, -V             Display version information with styling\n  --log LOG, -L LOG         Debug log file path (enables debug logging)\n  --net NET, -N NET         Network interface to display (default: auto-detect best interface)\n  --disk [DISK], -D [DISK]  Disk mountpoint to display (use without value for interactive selection)\n```\n\nFor benchmark-specific options:\n\n```sh\nsot bench -h\n```\n\n\u003c!--pytest-codeblocks: expected-output--\u003e\n\n```\nusage: sot bench [-h] [--output OUTPUT] [--duration DURATION]\n\noptions:\n  -h, --help            show this help message and exit\n  --output OUTPUT, -o OUTPUT\n                        Output file for benchmark results (JSON format)\n  --duration DURATION, -d DURATION\n                        Duration for each benchmark test in seconds (default: 10s)\n```\n\nFor clean-specific options:\n\n```sh\nsot clean -h\n```\n\n\u003c!--pytest-codeblocks: expected-output--\u003e\n\n```\nusage: sot clean [-h] [--dry-run]\n\noptions:\n  -h, --help  show this help message and exit\n  --dry-run   Show what would be cleaned without actually deleting\n```\n\nMain Theme:\n\n| Color | Hex | RGB |\n| --- | --- | --- |\n| sky_blue3 | `#5fafd7` | `rgb(95,175,215)` |\n| aquamarine3 | `#5fd7af` | `rgb(95,215,175)` |\n| yellow | `#808000` | `rgb(128,128,0)` |\n| bright_black | `#808080` | `rgb(128,128,128)` |\n| slate_blue1 | `#875fff` | `rgb(135,95,255)` |\n| red3 | `#d70000` | `rgb(215,0,0)` |\n| dark_orange | `#d75f00` | `rgb(215,95,0)` |\n\nAll supported [colors](https://rich.readthedocs.io/en/latest/appendix/colors.html).\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003cp align=\"center\"\u003e🏴 ≈ 🏴\u003c/p\u003e\n\u003c/p\u003e\n\n---\n\n`sot` uses:\n- [Textual](https://github.com/willmcgugan/textual/) for layouting\n- [rich](https://rich.readthedocs.io/en/latest/index.html) for rich text\n- [psutil](https://github.com/giampaolo/psutil) for fetching system data.\n\nTested Systems:\n\n![macOS](https://img.shields.io/badge/mac%20os-000000?style=for-the-badge\u0026logo=macos\u0026logoColor=F0F0F0)\n![Ubuntu](https://img.shields.io/badge/Ubuntu-E95420?style=for-the-badge\u0026logo=ubuntu\u0026logoColor=white)\n\n_If you use a system that's not listed above, feel free to add to the list. If you're facing any issues, would be happy to take a look._\n\n---\n\nOther top alternatives in alphabetical order:\n\n- [tiptop](https://github.com/nschloe/tiptop) ✨ This project was created on top of `tiptop`, when it became unmaintained.\n- [bashtop](https://github.com/aristocratos/bashtop), [bpytop](https://github.com/aristocratos/bpytop), [btop](https://github.com/aristocratos/btop)\n- [bottom](https://github.com/ClementTsang/bottom) (one of my fav)\n- [Glances](https://github.com/nicolargo/glances)\n- [gtop](https://github.com/aksakalli/gtop)\n- [htop](https://github.com/htop-dev/htop)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanistark%2Fsot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fanistark%2Fsot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanistark%2Fsot/lists"}