I've been working on publishing Lama2, a Plain-Text Powered REST API Client for Teams, for the past few months. Initial work on Lama2 started after my dissatisfaction with existing tools such as Postman/Insomnia. I wanted a text-powered and git-friendly system with a lightweight GUI layer on top so that I could onboard beginners/newcomers quickly into my team while also maintaining control over data. Today, we use Lama2 extensively internal to Hexmos; almost every internal code review tends to have a `.l2` API file attached now. It has worked great for us. More about the approach with Lama2 below.
TLDR: - Approach: "Markdown for APIs" (Design philosophy - https://hexmos.com/lama2/reference/philosophy.html) - Store APIs in plain-text files in human friendly syntax. (Examples - https://hexmos.com/lama2/tutorials/examples.html) - Simple CLI to execute API files - VSCode extension to launch requests right from within your editor - Collaborate with team over git - Good documentation + Extensibility - Import from Postman into Lama2 files - Fun Implementation :) Hand-crafted recursive descent parser in Golang; integrated flexible JSON parser
Links: Documentation site: https://hexmos.com/lama2 - Github: https://github.com/HexmosTech/Lama2
Background story: The story begins more than a year back, when our team at Hexmos wanted to collaborate on APIs in a simple and straightforward way. Our engineering infrastructure is split into dozens of self-contained software services. We deal with 100s of internal APIs, and so felt a need for a robust workflow for defining, sharing and updating APIs within our teams.
Traditional solutions such as Postman/Insomnia implement the collaboration features within their applications, and also tend to charge a fee for collaboration. We felt using git is the right way to collaborate on APIs, rather than any custom built solution. So, in a matter of 2 days we got a regex-based prototype DSL language to store API files.
Lots of issues cropped up over time, but we kept making improvements to Lama2 as needs arose. We accumulated 100s of API files over time. Then, we decided that the tool deserves to be out there, benefiting teams that want to collaborate on APIs over git. So, to make it happen, first we invested into formalising the grammar, and implementing the DSL as a hand-written recursive descent parser. Then we invested into helpful documentation, demos and so on. Once we had the basics, we released Lama2 into the world.
Future tasks: - Create human-friendly syntax for specifying websocket APIs, basic testing, etc - Integration with more editors + deeper/richer integration
Any suggestions/criticism/feedback welcome :)