This is basically a cli client to play.aidungeon.io.
This allows playing AI Dungeon 2 inside a terminal.
I primarily did this to play the game on a DEC VT320 hardware terminal for a more faithful experience.
For more context, read the accompanying blog post.
WARNING: As of writing the this client does not work anymore. This seems to be associated with API changes necessary for the introduction of the stamina system. We'll eventually adapt to those new changes and if you're handy with python you can help speed things up.
python3 -m pip install ai-dungeon-cli
Or for unstable release from the source code:
python3 -m pip install .
Package is on AUR.
trizen -S ai-dungeon-cli-git
Old school way:
git clone https://aur.archlinux.org/ai-dungeon-cli-git.git cd ai-dungeon-cli-git makepkg -si
Unless specified, all user inputs are considered
Quoted input entries are automatically interpreted as
Say actions, e.g.:
"Hey dragon! You didn't invite me to the latest BBQ party!"
Do be explicit about the action type, prefix your input with a command:
For example, the previous
Say prompt could also be written:
> /say Hey dragon! You didn't invite me to the latest BBQ party!
To quit, either press
Ctrl-D or type in the special
In any case, you first need to create a configuration file.
With a conda env (assuming you're using anaconda):
cd ai-dungeon-cli conda env create conda activate ai-dungeon-cli-env ./ai_dungeon_cli/__init__.py
With a viltualenv:
cd ai-dungeon-cli virtualenv -p $(command -v python3) ai-dungeon-cli-venv source ai-dungeon-cli-venv/bin/activate python3 -m pip install -r requirements.txt ./ai_dungeon_cli/__init__.py
Please note that all those examples use a virtual env in order to not mess up with the main Python env on your system.
Several things can be tuned by resorting to a config file.
Create a file
By default, if no authentication configuration is provided, an anonymous session is created.
ai-dungeon-cli supports 2 ways to configure user authentication.
Either precise a couple of credentials in conf:
email: '<MY-USER-EMAIL>' password: '<MY-USER-PASSWORD>'
Or sniff a Authentication Token and use it directly:
To get this token, you need to first login in a web browser to play.aidungeon.io.
Then you can find the token either in your browser localStorage or in the content of the
connection_init message of the websocket communication (first sent message).
Either way, developer tools (
F12) is your friend.
By default, responses are printed to the screen instantly.
To enable a fun "slow" typing animation, use:
The default user prompt is
You can customize it with e.g. :
prompt: 'me: '
All configuration options are mapped to command-line arguments.
Additionally, some features (such as multi-player support) are only available through those arguments.
The list of all arguments can be retrieved by calling
ai-dungeon-cli with either
One can use either the
--auth-token <token> or
--email <email> --password <password> arguments to authenticate.
--slow-typing to your execution call to enable this fancy effect.
The custom prompt can be set with
To join an existing multi-player adventure, use arguments
--adventure <public-adventure-id> --name <character-name>.
TO enable debug mode and see the responses from the play.aidungeon.io API, use
--debug. This option is mainly useful for developers.
Please have a look at requirements.txt.
Right now, the code is over-optimistic: we don't catch cleanly when the backend is down.
A better user experience could be achieved with the use of the curses library.
/alterspecial actions are not supported.
It would also be nice to add support for browsing other players' stories (Explore menu).
We fallback to a pure ASCII version of the splash logo if we detect an incompatible locale / terminal type.
As you might have heard, hosting AI Dungeon costs a lot of money.
This cli client relies on the same infrastructure as the online version (play.aidungeon.io).
So don't hesitate to help support the hosting fees to keep the game up and running.
Idan Gur @idangur: OOP rewrite of game logic
Alberto Oporto Ames @otreblan: packaging, submission to AUR, CI chain and general housekeeping
@jgb95: slow typing effect
Alexander Batyrgariev @sasha00123: help on porting to new websocket/gql-based version of the API
Robert Davis @bdavs: pip requirements
@Jezza: suggested login using creds
People have also forked this code and adapted it to interact with GPT-3: