{"id":32649516,"url":"https://github.com/atisharma/chasm","last_synced_at":"2025-10-31T06:55:45.603Z","repository":{"id":181499954,"uuid":"666865190","full_name":"atisharma/chasm","owner":"atisharma","description":"CHAracter State Management - a generative text adventure ","archived":false,"fork":false,"pushed_at":"2025-06-03T11:22:40.000Z","size":53,"stargazers_count":49,"open_issues_count":6,"forks_count":4,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-10-29T12:59:01.940Z","etag":null,"topics":["chatgpt","game","interactive-fiction","llama","llm","openai","text-adventure"],"latest_commit_sha":null,"homepage":"https://chasm.run","language":"Hy","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/atisharma.png","metadata":{"files":{"readme":"README.md","changelog":null,"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":"AUTHORS","dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-07-15T20:59:25.000Z","updated_at":"2025-10-23T03:49:55.000Z","dependencies_parsed_at":"2024-10-29T07:32:14.741Z","dependency_job_id":"27f721ae-0a75-4bb1-a7c3-893f38b91830","html_url":"https://github.com/atisharma/chasm","commit_stats":{"total_commits":43,"total_committers":2,"mean_commits":21.5,"dds":0.09302325581395354,"last_synced_commit":"f6761b3a50ac6a96c08bfbcf0ec0858b0b6cd200"},"previous_names":["atisharma/chasm_client","atisharma/chasm"],"tags_count":20,"template":false,"template_full_name":null,"purl":"pkg:github/atisharma/chasm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atisharma%2Fchasm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atisharma%2Fchasm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atisharma%2Fchasm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atisharma%2Fchasm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/atisharma","download_url":"https://codeload.github.com/atisharma/chasm/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atisharma%2Fchasm/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281703079,"owners_count":26547053,"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-10-29T02:00:06.901Z","response_time":59,"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":["chatgpt","game","interactive-fiction","llama","llm","openai","text-adventure"],"created_at":"2025-10-31T06:55:30.111Z","updated_at":"2025-10-31T06:55:45.598Z","avatar_url":"https://github.com/atisharma.png","language":"Hy","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Chasm - CHAracter State Manager (game client)\n\nChasm is a ***generative text adventure game*** in a ***world you\nspecify***. It uses generative artificial intelligence to generate\nscenes and characters as you play. Unlike simply role-playing with a\nchatbot, important state persists (locations, characters, dialogue\netc.)\n\nSee the [example gameplay](example-gameplay.md) for what a new game can be like.\n\n**This is the client software that connects to a server.**\nTo play, you need to connect to [a server](https://chasm.run/worlds). If you have access to an OpenAI-compatible API, you can run [your own server](https://github.com/atisharma/chasm_engine).\n\nChasm is still being written. It's already pretty great though,\nwith a good model.\n\n\n## Features\n\n* [x] specify initial world with a short description\n* [x] persistent world / locations\n* [x] fuzzy matching names of locations\n* [x] continue / save file for game\n* [x] persistent items\n* [x] character inventory\n* [x] per-character event memory\n* [x] per-character quests\n* [x] take, drop, use items\n* [ ] permanently modify items\n* [ ] natural item interaction\n* [ ] natural item spawning from narrative\n* [ ] NPCs should interact with items\n* [ ] NPCs should interact with plot, follow quests\n* [x] NPCs should travel\n* [x] persistent global event memory (plot events in vector db)\n* [x] per-character dialogue memory (snippets in vector db)\n* [x] play as any character\n* [x] world editor / admin repl for manual world construction\n* [x] multiplayer - separate async server with many clients\n* [x] player authentication\n\n\n## Installing and running\n\n### Installing\n\nThere are some dependencies so you may want to install\neverything in a virtual environment.\nTo install using pip:\n```bash\n$ \u003cactivate your venv\u003e\n$ pip3 install -U git+https://github.com/atisharma/chasm\n# edit the client.toml file (see below), for example using nano\n$ nano client.toml\n$ chasm\n```\n\nYou may want to consider using pyenv for complete control over your python version.\n\n\n### Running the client\n\nCheck your settings in `client.toml`, activate your venv and invoke chasm from inside your terminal, so\n```bash\n$ chasm\n```\nwill connect to the server with the character name set in the `client.toml` config (see the example). You'll need to specify a passphrase which will be the key for your character.\n\n```toml\nname = \"Hero\"\npassphrase = \"sup3r-secr3t un1que pa55phrase\"\n# connect to a world on a specific port on the server\nchasm_server = \"tcp://chasm.run:PORT\"\nloglevel = \"info\"\n```\nwhere `PORT` is the port number of your [world](https://chasm.run/worlds).\n\nYou'll need to run it inside a terminal that can handle escape characters (colour etc). Any linux terminal should work - I'm not sure about Windows.\n\n### Character cards\n\nIf you want to override your or any other character's attributes\npermanently, create a file `characters/Hero.json` (if your character's\nname is Hero) with the contents\n```json\n{\n    \"name\": \"Hero\",\n    \"appearance\": \"Heroic\",\n    \"gender\": \"Hero's gender\",\n    \"backstory\": \"Comes from a long line of heroes; heroic from an early age.\",\n    \"voice\": \"Heroic\",\n    \"traits\": \"Heroism\",\n    \"likes\": \"Being heroic\",\n    \"dislikes\": \"Not being heroic\",\n    \"motivation\": \"To be heroic\"\n}\n```\nreflecting the desired values. Leave out fields and they'll be automatically generated. The `name` field is ignored (since it's implicit in the filename).\n\n\n## Interface\n\n- [x] management done by config files\n- [x] terminal interface\n- [ ] web chat interface, since should be remotely available?\n- [ ] map display?\n\n\n## Problems / bugs\n\nThere are still many.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fatisharma%2Fchasm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fatisharma%2Fchasm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fatisharma%2Fchasm/lists"}