I am following along the tutorial here but get the following error message when I execute cleos wallet create --to-console:

Error 3110002: Missing Wallet API Plugin
Ensure that you have eosio::wallet_api_plugin added to your node's configuration!
Otherwise specify your wallet location with --wallet-url argument!
Error Details:
Wallet is not available

When searching online, a GitHub issue indicates that

wallet_api_plugin isn't supported in nodeos anymore

How should I proceed to create a wallet?

  • do you have kleosd running? cleos communicates with it to manage wallets. i believe cleos should start keosd automatically, so check your environment for possible issues in cleos-keosd communications, or issues in starting keosd (and binding to port).
    – kg_sYy
    Aug 20, 2018 at 21:31
  • @kg_sYy, I am not sure if kleosd is running. How can I check? I followed the steps from this tutorial: eosio-nodeos.readme.io/docs/docker-quickstart
    – smart
    Aug 21, 2018 at 3:20
  • I went through that docker tutorial few days ago and it worked fine for me. Did you pull the latest docker image, alias cleos and check all the docker parameters as specified in tutorial? Also does the URL given in the tutorial to check the RPC api work? To check what runs in docker, you may need to google how to get shell in docker or try to execute something like "ps aux | grep keosd" in it. Google how to get docker shell or exec commands in it. Also docker logs command may help without need to shell.
    – kg_sYy
    Aug 21, 2018 at 4:27
  • yes, everything is fine until I try to create a wallet. I went in to the container to manually start keosd but says "Address is already in use".
    – smart
    Aug 21, 2018 at 15:46
  • some configurations try to start both the nodeos and keosd servers on the same port, that could stop keosd from running, if it cannot listen on the given port. you can try setting different ports if that helps.
    – kg_sYy
    Aug 21, 2018 at 15:51

2 Answers 2


===EOSIO v1.2.2===

@art You're right, that github issue further implies that the files needed to run the wallet_api_plugin aren't even in that docker container. I've found no other explanation or fix for why that PR was created; I'd imagine it solves some other problem, but the consequence is that running that provided docker container does not provide a wallet that will talk to the nodeos service.

There's a few ways to solve this problem, but I'll offer what I think is the simplest one. When you look at setting up a dev environment, there are a few options give. Roughly the categories are: use docker or build from source. But within the Docker category, there are also 2 options: one (the one in that tutorial you're working with) is a pre-packaged docker container (which is now broken as of 1.2.0). The other is to build the docker container your self. Instructions here.

Now, for educational purposes, I highly recommend playing around with that entire set of instructions so you understand the tools better (I've certainly learned a lot from doing so...), but I'll give the short/extracted version here:

  • See if the docker container you already downloaded is running and stop it if it is

docker ps

docker stop <CONTAINER_ID>

  • Rather than use the provided container, which used to run nodeos, keos, and a plugin that would allow the 2 to talk, we're going to build and start a docker container that is running both in such a way that they can communicate:

git clone https://github.com/EOSIO/eos.git

docker volume create --name=nodeos-data-volume

docker volume create --name=keosd-data-volume


docker-compose -f <PATH_TO_CLONED_EOS_REPO_DIR>/Docker/docker-compose.yml up -d

Finally, to access cleos from anywhere, you can add this alias to your .bashrc / .profile script (as well as running it at the command line to make it immediately active). Remember to replace PATH_TO_CLONED_EOS_REPO: alias cleos='docker-compose -f <PATH_TO_CLONED_EOS_REPO>/Docker/docker-compose.yml exec keosd /opt/eosio/bin/cleos -u http://nodeosd:8888 --wallet-url http://localhost:8900'

  • Finally, you can now work with the wallet. The only thing I haven't figure out yet is that the instructions in that tutorial say to create a wallet, which (if you provide no explicit name) will create the "default" wallet. It appears that that default wallet gets created automatically somewhere in this process. So you don't need to do that step, but that first step also gave you the password to that default wallet, so that's a problem...

What I've done is use an explicit wallet name, which means that every time you're accessing the wallet, you'll need to provide the name like --name test_wallet. Type cleos wallet --help to see how and where to use the --name option.

The other change in this release is that you need to add --to-console to wallet commands to see the output.

I found this post, which first walks you through a shorter version of my instructions above, but those instructions are a month old (at the time of this writing, and I have not verified that they work with 1.2.2) and then beautifully walks you through the wallet create process, and I've posted an updated version of the author's wallet/users creation process in script form with the 2 tweaks mentioned above for clarity. You can find that in my github repo here

Steem version of this post with a little more instruction here


Go into the running container:

docker exec -it eosio bash

and run (inside the container):


In another terminal (outside of the container),

you can alias cleos:

alias cleos='docker exec -it eosio /opt/eosio/bin/cleos'

and now wallet commands should work:

$ cleos wallet create --name default --to-console
Save password to use in the future to unlock this wallet.
Without password imported keys will not be retrievable.

(tested with eosio/eos-dev v1.4.3)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.