I'm doing week 3 of the Plutus Pioneer Program. The CLI portion was especially interesting to me. If I understand correctly, the cardano-cli can interact with the real mainnet, which presents the following opportunity: Use the CLI to execute transactions, but have everything else (all the business logic) controlled by a non-Plutus programming construct (eg. PHP, MySQL, Python, even Applescript).

Writing dynamically created shell scripts to execute individual transactions appears to be fairly straightforward. What obstacles/problems/unintended consequences might I encounter creating such a thing? Much of what Plutus smart contracts allow does not apply to the business project I am envisioning.

Update January 1, 2023. I have just released an Applescript based installer for cardano-node. I call it FASTLAIYN (Forget About Shell Tedium, Let Applescript Install Your Nodes).


I'm also well on my way to building an Applescript based transfer wallet and NFT generator. If I can find others interested in applying Applescript to the cardano-cli, we could turn this into a legitimate Cardano project for the ecosystem.

2 Answers 2


You are correct - there were many scripts created by the community for mainnet use long before Plutus Contracts launched in September 2021. A good example of this are the Guild Operator's Wrapper Scripts. - an excellent toolkit mostly written for shell use.

If Plutus is not/minimally necessary for your business logic, then bon voyage!

  • Both answers offered are excellent. I wish I could vote for both.
    – XiTouch
    Feb 11, 2022 at 8:22

I have some example python code that does pretty much what you ask called adawallet. https://github.com/input-output-hk/adawallet

It works by shelling out to the CLI from a python library to cardano-cli, cardano-address and cardano-hw-cli. It gets chain state from cardano-rosetta so the user creating the transactions doesn't need a full node, and user signing transactions can do so fully offline with no internet access to keep the keys secure. It keeps local state in a SQLite database.

The downside of developing an application for others to use without plutus scripts is it requires trust on the user using your service that your code will do what they asked it to. Plutus on the other hand gives you on-chain code that if the user knows what the code is supposed to do, they don't need to trust a central authority to do what they've asked. This is essentially for example the difference between a centralized exchange and a decentralized exchange. The decentralized one uses on-chain code to deliver some guarantee to the user.

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.