{"id":37067390,"url":"https://github.com/kbernhagen/lufah","last_synced_at":"2026-01-14T07:54:43.616Z","repository":{"id":155835101,"uuid":"610215106","full_name":"kbernhagen/lufah","owner":"kbernhagen","description":"Little Utility for FAH v8","archived":false,"fork":false,"pushed_at":"2025-11-25T09:15:53.000Z","size":469,"stargazers_count":10,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-01-01T22:46:27.347Z","etag":null,"topics":["cli","folding-at-home","foldingathome"],"latest_commit_sha":null,"homepage":"","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/kbernhagen.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"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":"2023-03-06T10:25:44.000Z","updated_at":"2025-11-25T09:15:56.000Z","dependencies_parsed_at":null,"dependency_job_id":"b8f9394b-42e1-4b31-b621-6dd43d57056b","html_url":"https://github.com/kbernhagen/lufah","commit_stats":null,"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"purl":"pkg:github/kbernhagen/lufah","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kbernhagen%2Flufah","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kbernhagen%2Flufah/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kbernhagen%2Flufah/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kbernhagen%2Flufah/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kbernhagen","download_url":"https://codeload.github.com/kbernhagen/lufah/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kbernhagen%2Flufah/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28413527,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T05:26:33.345Z","status":"ssl_error","status_checked_at":"2026-01-14T05:21:57.251Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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":["cli","folding-at-home","foldingathome"],"created_at":"2026-01-14T07:54:43.018Z","updated_at":"2026-01-14T07:54:43.610Z","avatar_url":"https://github.com/kbernhagen.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# lufah\n\nLittle Utility for FAH v8\n\nA python command line utility for macOS, Linux, Windows\n\n## Requirements\n\n- python 3.9 or later\n\n## Install from PyPI\n\nInstall in isolated user environment (preferred):\n```\npip install pipx\npipx install lufah\n```\n\nOr\n```\npip install lufah\n```\n\n## Uninstall\n\n```\npip install pipx\npipx uninstall lufah\n```\n\nOr\n```\npip uninstall lufah\n```\n\n## Install from source\n\nmacOS / Linux / Windows\n```\ngit clone https://github.com/kbernhagen/lufah.git\ncd lufah\nmake install-user\n```\n\n## Uninstall from source\n\n```\ngit clone https://github.com/kbernhagen/lufah.git\ncd lufah\nmake uninstall-user\n```\n\n## Usage\n\nNote that lufah uses unencrypted, direct websocket connections.\nThis is what Web Control uses to connect to the local client.\nThis has security implications if you enable direct remote access on a client.\nSee [HOWTO: Allow v8 Client Remote Control](https://foldingforum.org/viewtopic.php?t=39050)\n\n```\nlufah -h\n```\n\n```\nUsage: lufah [OPTIONS] COMMAND [ARGS]...\n\n  Little Utility for FAH v8\n\nOptions:\n  -a, --address ADDRESS  [host][:port][/group] or\n                         [host][:port],[host][:port]... Use \".\" for localhost.\n                         Group name must not be url-encoded, but may need\n                         escaping from shell. Can be a comma-separated list of\n                         hosts for commands units, info, fold, finish, pause\n                         [default: localhost:7396]\n  -v, --verbose\n  -d, --debug\n  --version              Show version and exit.\n  --install-completion   Install completion for the current shell.\n  --show-completion      Show completion for the current shell, to copy it or\n                         customize the installation.\n  -h, --help             Show this message and exit.\n\nCommands:\n  fold               Start folding in specified group or all groups.\n  finish             Finish folding and pause specified group or all groups.\n  pause              Pause folding in specified group or all groups.\n  unpause            (Deprecated) alias for fold\n  wait-until-paused  Run until specified group or all groups are paused.\n  config             Get or set config values.\n  create-group       Create group if it does not exist.\n  delete-group       Delete group if it exists, is not \"\", is paused, and...\n  dump-all           Dump all paused units in specified group or all groups.\n  enable-all-gpus    Enable all unclaimed gpus in specified group.\n  state              Show json snapshot of client state.\n  status             (Deprecated) alias for state\n  get                Show json value at dot-separated key path in client...\n  groups             Show json array of resource group names.\n  history            Show work unit history and exit.\n  info               Show host and client info.\n  log                Show client log.\n  top                Show top-like updating units table.\n  units              Show table of all units by machine name and group.\n  watch              Show incoming messages.\n  link-account       Link to account by token.\n  unlink-account     Unlink account.\n  restart-account    Restart account/node connection.\n  start              Start local client service.\n  stop               Stop local client service.\n```\n\n```\nlufah config -h\n```\n\n```\nUsage: lufah config [OPTIONS] COMMAND [ARGS]...\n\n  Get or set config values.\n\n  Other than for account settings (user, team, passkey, cause), a group must\n  be specified if there is more than one group.\n\n  Example: lufah -a / config cpus 0\n\nOptions:\n  -h, --help  Show this message and exit.\n\nCommands:\n  beta        Enable beta work units.\n  cause       Set cause preference.\n  checkpoint  (Deprecated) Set requested CPU WU checkpoint frequency in\n              minutes.\n  cpus        Set number of cpus to allocate to resource group.\n  cuda        Enable CUDA for WUs in specified group.\n  fold-anon   (Deprecated) Fold anonymously.\n  hip         Enable HIP for WUs in specified group.\n  keep-awake  Prevent system sleep while folding and not on battery.\n  key         Set project key for internal beta testing of new projects.\n  on-battery  Fold even if on battery.\n  on-idle     Only fold while user is idle.\n  passkey     Set passkey token for quick return bonus points.\n  priority    (Deprecated) Set preferred core task priority.\n  team        Set team number.\n  user        Set folding user name, \"\" or 2 to 100 bytes.\n```\n\n## Examples\n\n```\nlufah units\nlufah -a //rg2 finish\nlufah -a /mygpu1 config cpus 0\nlufah -a host1,host2,host3 units\nlufah -a host1,host2,host3 info\n```\n\n## Notes\n\nIf not given, the default command is \"units\".\n\nIf there are multiple groups, config requires a group name,\nexcept for account settings (user, team, passkey, cause).\n\nFor command `lufah -a /groupname config cpus N`, N is not limited to unused cpus across groups.\n\nGroup \"/\" is taken to mean the default group, which is \"\".\n\nFor a group name actually starting with \"/\", use prefix \"//\".\nExample: `lufah -a somehost//rg1 finish`\n\nAn error may not be shown if connection times out.\n\nCommands start and stop are macOS-only.\n\nThe `top` command is glitchy on Windows when the window is resized.\nType space to force a redraw.\nTo use `lufah top` on Windows, you may need to manually install `windows-curses`.\n\n## Example Output\n\n```\nlufah -a .,panda.local units\n```\n```\n----------------------------------------------------------------------------------------------------------\nPRCG                 CPUs GPUs Core Status          Progress PPD         TPF      ETA     Timeout Deadline\n----------------------------------------------------------------------------------------------------------\nPanda/                              Run \n18240 1190,0,463     4    0    0xa8 Running          12.8%   156,073     01m 30s  2h 11m   1d 23h   4d 23h \nSanctuary/                          Paused\nSanctuary/aux                       Run \n18806 17,14,474      12   0    0xa9 Running          62.7%   397,835     03m 33s  2h 12m   2d 20h   2d 22h \n\nTotal PPD: 553,908\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkbernhagen%2Flufah","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkbernhagen%2Flufah","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkbernhagen%2Flufah/lists"}