Amazon Alexa Skill for Interactive Fiction (Z-Machine). Clojure. Implemented without Alexa Skill SDK.
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

Interactive Fiction Alexa Skill

A Z-Machine for Alexa.

See it in action

Playing Galatea on Alexa


This skill has been deployed to Alexa Skill Store; just say "Alexa, enable Interactive Fiction". If you don't have an Alexa device, you can try the skill out on but it does not support sessions, making it seriously harder to use than a real Echo.

The official page of the skill on


If you want to build it from scratch:

  • Get, build and install ZAX into local Maven repository:

pushd ~/tmp/
git clone
cd zax
rm -f zax.jar
ant -f zax.xml all
echo -e "Manifest-Version: 1.0\nCreated-By: 1.8.0_45 (Oracle Corporation)\nMain-Class: com.zaxsoft.apps.zax.Zax\n" > /tmp/manifest
jar cvmf /tmp/manifest zax.jar -C out/production/Zax/ com

mvn install:install-file -Dfile=zax.jar -DgroupId=github-mattkimmel -DartifactId=zax -Dversion=0.91 -Dpackaging=jar
  • Clone this project and build an uberjar with Leiningen:
git clone
cd interactive-fiction-alexa-skill/
lein uberjar

The resulting jar is ready to be uploaded to an AWS Lambda function.

  • Set your Lambda function handler to ifas.ZLambdaFunction::handleLambda
  • Create DynamoDB tables (using aws cli in this example):

aws dynamodb create-table --table-name IfasStoryLinks --attribute-definitions AttributeName=name,AttributeType=S --key-schema AttributeName=name,KeyType=HASH --provisioned-throughput ReadCapacityUnits=1,WriteCapacityUnits=1

aws dynamodb create-table --table-name IfasStoryDumps --attribute-definitions AttributeName=customerId,AttributeType=S AttributeName=url,AttributeType=S --key-schema AttributeName=customerId,KeyType=HASH AttributeName=url,KeyType=RANGE --provisioned-throughput ReadCapacityUnits=1,WriteCapacityUnits=1

The IfasStoryLinks table contains mappings from story names to URLs (should be pre-configured), and IfasStoryDumps keeps track of user state and is managed by the skill.


Copyright © 2016 Vitaly Lishchenko

Distributed under the Eclipse Public License either version 1.0 or (at your option) any later version.