{"id":15634550,"url":"https://github.com/healeycodes/andoma","last_synced_at":"2026-03-09T15:31:15.674Z","repository":{"id":48070774,"uuid":"313377661","full_name":"healeycodes/andoma","owner":"healeycodes","description":"♟️ A chess engine with alpha-beta pruning, piece-square tables, move ordering, and command-line UI.","archived":false,"fork":false,"pushed_at":"2023-03-24T00:28:14.000Z","size":128,"stargazers_count":164,"open_issues_count":9,"forks_count":28,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-08-20T08:43:26.954Z","etag":null,"topics":["alpha-beta-pruning","bot","chess","chess-engine","lichess","move-ordering","piece-square-tables","uci"],"latest_commit_sha":null,"homepage":"https://healeycodes.com/building-my-own-chess-engine/","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/healeycodes.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}},"created_at":"2020-11-16T17:29:30.000Z","updated_at":"2025-08-13T20:34:13.000Z","dependencies_parsed_at":"2022-08-12T18:00:29.958Z","dependency_job_id":"c7da5eae-12c9-496d-a9d9-877d82e99085","html_url":"https://github.com/healeycodes/andoma","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/healeycodes/andoma","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/healeycodes%2Fandoma","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/healeycodes%2Fandoma/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/healeycodes%2Fandoma/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/healeycodes%2Fandoma/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/healeycodes","download_url":"https://codeload.github.com/healeycodes/andoma/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/healeycodes%2Fandoma/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30301109,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-09T14:33:48.460Z","status":"ssl_error","status_checked_at":"2026-03-09T14:33:48.027Z","response_time":61,"last_error":"SSL_read: 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":["alpha-beta-pruning","bot","chess","chess-engine","lichess","move-ordering","piece-square-tables","uci"],"created_at":"2024-10-03T10:53:58.188Z","updated_at":"2026-03-09T15:31:15.473Z","avatar_url":"https://github.com/healeycodes.png","language":"Python","readme":"[![Unit tests and puzzles](https://github.com/healeycodes/andoma/workflows/Unit%20tests%20and%20puzzles/badge.svg)](https://github.com/healeycodes/andoma/actions/workflows/python-app.yml)\n\n# ♟ Andoma\n\u003e My blog post: [Building My Own Chess Engine](https://healeycodes.com/building-my-own-chess-engine/)\n\n\u003cbr\u003e\n\nA chess engine which implements:\n- [Alpha-beta pruning](https://en.wikipedia.org/wiki/Alpha%E2%80%93beta_pruning) for move searching\n- [Move ordering](https://www.chessprogramming.org/Move_Ordering) based off heuristics like captures and promotions\n- Tomasz Michniewski's [Simplified Evaluation Function](https://www.chessprogramming.org/Simplified_Evaluation_Function) for board evaluation and piece-square tables\n- A slice of the Universal Chess Interface (UCI) to allow challenges via lichess.org\n- A command-line user interface\n\nIt uses Python 3.8 with Mypy type hints and unit + integration tests.\n\nSee [Contributing](#contributing) to help out!\n\n\u003cbr\u003e\n\n## Install\n\n`pip install -r requirements.txt`\n\n\u003cbr\u003e\n\n## Use it via command-line\n\nStart the engine with:\n\n`python ui.py`\n\n```bash\nStart as [w]hite or [b]lack:\nw\n\n  8 ♖ ♘ ♗ ♕ ♔ ♗ ♘ ♖\n  7 ♙ ♙ ♙ ♙ ♙ ♙ ♙ ♙\n  6 · · · · · · · ·\n  5 · · · · · · · ·\n  4 · · · · · · · ·\n  3 · · · · · · · ·\n  2 ♟ ♟ ♟ ♟ ♟ ♟ ♟ ♟\n  1 ♜ ♞ ♝ ♛ ♚ ♝ ♞ ♜\n    a b c d e f g h\n\nEnter a move like g1h3:\n```\n\n\u003cbr\u003e\n\n## Use it as a UCI engine\n\n_The only interfaces that Andoma currently supports are [ShailChoksi/lichess-bot](https://github.com/ShailChoksi/lichess-bot) and the command-line UI (ui.py). Debug information and configuration options are minimal compared to a full UCI engine._\n\n\u003cbr\u003e\n\nStart the engine with:\n\n`python main.py`\n\nAn example interaction with the engine (responses have `#`):\n\n```bash\nuci\n# id name Andoma\n# id author Andrew Healey \u0026 Roma Parramore\n# uciok\nposition startpos moves e2e4\ngo\n# bestmove g8f6\n```\n\nAlso accepts a FEN string:\n\n`position fen rnbqk1nr/p1ppppbp/1p4p1/8/2P5/2Q5/PP1PPPPP/RNB1KBNR b KQkq - 0 1`\n\n\u003cbr\u003e\n\nSee the [UCI interface doc](https://github.com/healeycodes/andoma/blob/main/uci-interface.md) for more information on communicating with the engine.\n\n\u003cbr\u003e\n\n## Lichess.org\n\nThe UCI protocol slice that's implemented by this engine means you can play it via lichess.org by using [ShailChoksi/lichess-bot](https://github.com/ShailChoksi/lichess-bot) (a bridge between Lichess API and chess engines) and a BOT account.\n\nThe engine file required by `lichess-bot` may be generated using [pyinstaller](https://www.pyinstaller.org/).\n\n\u003cbr\u003e\n\n## Tests\n\nThere are unit tests for the engine, UI, and evaluation modules. Mate-in-two/mate-in-three puzzles are being added.\n\n`python -m unittest discover test/`\n\nType hints:\n\n`pip install -r requirements-dev.txt`\n\n`mypy .`\n\n\u003cbr\u003e\n\n## Contributing\n\nRaise an issue to propose a bug fix or feature (or pick up an existing one).\n\nI ([@healeycodes](https://github.com/healeycodes)) am happy to help you along the way.\n\nFor coding style: look at the existing files, use Mypy types, use PEP8, and add a test for any change in functionality.\n\nPlease run the tests locally before submitting a PR.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhealeycodes%2Fandoma","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhealeycodes%2Fandoma","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhealeycodes%2Fandoma/lists"}