{"id":17384569,"url":"https://github.com/pgdr/flockfish","last_synced_at":"2025-08-03T12:10:10.652Z","repository":{"id":139058334,"uuid":"150991577","full_name":"pgdr/flockfish","owner":"pgdr","description":"Stockfish Flask API","archived":false,"fork":false,"pushed_at":"2018-10-02T07:49:31.000Z","size":23,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-03-27T21:18:31.504Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pgdr.png","metadata":{"files":{"readme":"README.md","changelog":null,"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}},"created_at":"2018-09-30T17:56:23.000Z","updated_at":"2018-09-30T19:34:14.000Z","dependencies_parsed_at":null,"dependency_job_id":"5138e62d-94a1-4f70-a197-8e2b8c431d2d","html_url":"https://github.com/pgdr/flockfish","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/pgdr/flockfish","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pgdr%2Fflockfish","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pgdr%2Fflockfish/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pgdr%2Fflockfish/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pgdr%2Fflockfish/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pgdr","download_url":"https://codeload.github.com/pgdr/flockfish/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pgdr%2Fflockfish/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268542233,"owners_count":24266867,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-03T02:00:12.545Z","response_time":2577,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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-10-16T07:45:54.012Z","updated_at":"2025-08-03T12:10:10.566Z","avatar_url":"https://github.com/pgdr.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# flockfish\n\nA [Flask](https://github.com/pallets/flask) server that boots up\n[Stockfish](https://github.com/official-stockfish/Stockfish) and returns best\nmoves.\n\nFor this project, you need to download and install `stockfish` and either have\nit in `$PATH` or give the path to `stockfish` as an argument.\n\nFour endpoints:\n* `/`  (which returns all of the below)\n* `/bestmove`\n* `/fen`\n* `/board`\n\nThey all take arguments `?fen=\u003cfenstring\u003e\u0026moves=\u003cspace separated fullmoves\u003e`\n\n## The gist of it: the `/` endpoint\n\nCalling the main endpoint, the  `/` endpoint with a list of moves,\n\n`http://127.0.0.1:6464/?moves=e2e4 c7c5 c2c3 d7d5 e4d5 d8d5 d2d4 g8f6 b1a3 c5d4 a3b5 b8a6 d1d4 e7e5 d4d5`\n\nyields\n\n```json\n{\n  \"bestmove\": \"f6d5\",\n  \"board\":    [\"+---+---+---+---+---+---+---+---+\",\n               \"| r |   | b |   | k | b |   | r |\",\n               \"+---+---+---+---+---+---+---+---+\",\n               \"| p | p |   |   |   | p | p | p |\",\n               \"+---+---+---+---+---+---+---+---+\",\n               \"| n |   |   |   |   | n |   |   |\",\n               \"+---+---+---+---+---+---+---+---+\",\n               \"|   | N |   | Q | p |   |   |   |\",\n               \"+---+---+---+---+---+---+---+---+\",\n               \"|   |   |   |   |   |   |   |   |\",\n               \"+---+---+---+---+---+---+---+---+\",\n               \"|   |   | P |   |   |   |   |   |\",\n               \"+---+---+---+---+---+---+---+---+\",\n               \"| P | P |   |   |   | P | P | P |\",\n               \"+---+---+---+---+---+---+---+---+\",\n               \"| R |   | B |   | K | B | N | R |\",\n               \"+---+---+---+---+---+---+---+---+\"],\n  \"fen\":      \"r1b1kb1r/pp3ppp/n4n2/1N1Qp3/8/2P5/PP3PPP/R1B1KBNR b KQkq - 0 8\"\n}\n```\n\n\n## Examples\n\nexamples:\n* `bestmove?moves=e2e4 c7c5 c2c3 d7d5 e4d5 d8d5` -\u003e `d2d4` (according to Deep Blue)\n* `fen?moves=e2e4 c7c5 c2c3 d7d5 e4d5 d8d5` -\u003e `\"rnb1kbnr/pp2pppp/8/2pq4/8/2P5/PP1P1PPP/RNBQKBNR w KQkq - 0 4\"`\n* `board?fen=rnb1kbnr/pp2pppp/8/2pq4/8/2P5/PP1P1PPP/RNBQKBNR w KQkq - 0 4` -\u003e\n```\n[\"+---+---+---+---+---+---+---+---+\",\n \"| r | n | b |   | k | b | n | r |\",\n \"+---+---+---+---+---+---+---+---+\",\n \"| p | p |   |   | p | p | p | p |\",\n \"+---+---+---+---+---+---+---+---+\",\n \"|   |   |   |   |   |   |   |   |\",\n \"+---+---+---+---+---+---+---+---+\",\n \"|   |   | p | q |   |   |   |   |\",\n \"+---+---+---+---+---+---+---+---+\",\n \"|   |   |   |   |   |   |   |   |\",\n \"+---+---+---+---+---+---+---+---+\",\n \"|   |   | P |   |   |   |   |   |\",\n \"+---+---+---+---+---+---+---+---+\",\n \"| P | P |   | P |   | P | P | P |\",\n \"+---+---+---+---+---+---+---+---+\",\n \"| R | N | B | Q | K | B | N | R |\",\n \"+---+---+---+---+---+---+---+---+\"]\n```\n\nStarting the server, `python flock.py` and then visiting\n`http://127.0.0.1:6464/bestmove/?fen=rnbqkbnr/pp1ppppp/8/2p5/4P3/5N2/PPPP1PPP/RNBQKB1R%20b%20KQkq%20-%201%202`\nyields\na json string containing only `b8c6`.\n\nThe `board` endpoint returns the board:\n\n`http://127.0.0.1:6464/board/?fen=rnbqkbnr/pp1ppppp/8/2p5/4P3/5N2/PPPP1PPP/RNBQKB1R%20b%20KQkq%20-%201%202`\nyields a json list\n```json\n[\"+---+---+---+---+---+---+---+---+\",\n \"| r | n | b | q | k | b | n | r |\",\n \"+---+---+---+---+---+---+---+---+\",\n \"| p | p |   | p | p | p | p | p |\",\n \"+---+---+---+---+---+---+---+---+\",\n \"|   |   |   |   |   |   |   |   |\",\n \"+---+---+---+---+---+---+---+---+\",\n \"|   |   | p |   |   |   |   |   |\",\n \"+---+---+---+---+---+---+---+---+\",\n \"|   |   |   |   | P |   |   |   |\",\n \"+---+---+---+---+---+---+---+---+\",\n \"|   |   |   |   |   | N |   |   |\",\n \"+---+---+---+---+---+---+---+---+\",\n \"| P | P | P | P |   | P | P | P |\",\n \"+---+---+---+---+---+---+---+---+\",\n \"| R | N | B | Q | K | B |   | R |\",\n \"+---+---+---+---+---+---+---+---+\"]\n```\n\n\nThe `fen` endpoint\n`http://127.0.0.1:6464/fen/?moves=e2e4%20c7c5%20c2c3%20d7d5%20e4d5%20d8d5`\nyields\n```json\n\"rnb1kbnr/pp2pppp/8/2pq4/8/2P5/PP1P1PPP/RNBQKBNR w KQkq - 0 4\"\n ```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpgdr%2Fflockfish","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpgdr%2Fflockfish","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpgdr%2Fflockfish/lists"}