Practical overview
When it fits
Use Geas when a project calls for direct EVM-level control, a specialty program, or low-level experimentation. For most contract logic, the project recommends a high-level compiler such as Solidity.
Who it is for
- Ethereum developers creating specialty contract programs.
- Developers experimenting with EVM instructions and assembly macros.
- Go developers who want to use the assembler as a library.
Documented uses
- Assemble an EVM assembly file into bytecode.
- Disassemble hexadecimal bytecode supplied through standard input.
- Write and review low-level EVM programs using instructions, expressions, labels, and comments.
Requirements & limits
Geas is an open-source Go command-line tool under the LGPL-3.0 license. Its README documents installation through Go and a development build from a cloned repository.
- Geas represents EVM bytecode directly, so authors work with the stack-based instruction model rather than relying on high-level language abstractions.
- Conveniences include variable-size push instructions and label-based jump references; these facilities are optional.
- The project documents both command-line use and a Go library interface.
- The repository includes an Emacs extension, while Vim support is referenced through a separate project.
Check current requirements in the official documentation. Source-based guidance does not mean OpenViST has run or independently tested this project.
Install Geas and assemble an EVM source file
Install the Geas command-line binary with Go, then use it to create bytecode from an assembly file.
Before you start
- The Go tool.
- An EVM assembly file to assemble.
Steps
Run
env "GOBIN=$PWD" go install github.com/fjl/geas/cmd/geas@latestto install the latest released version into the current directory.Run
./geas -a file.eas, replacingfile.easwith the assembly filename.
Expected outcome
Geas assembles the named source file into bytecode.
Guide limitations
- The guide covers assembly from a file; the README does not specify output-file options here.
- Geas exposes low-level EVM details and is intended for specialty programs and experimentation; the project recommends a high-level compiler such as Solidity for most contracts.
Disassemble hexadecimal bytecode from standard input
Use the Geas disassembler on hexadecimal bytecode supplied through standard input.
Before you start
- The Geas command-line binary.
- Hexadecimal bytecode available on standard input.
Steps
Supply the hexadecimal bytecode to Geas on standard input.
Run
./geas -d -to disassemble the input.
Expected outcome
Geas disassembles the hexadecimal bytecode supplied through standard input.
Guide limitations
- The documented command reads from standard input; the README does not give a file-input disassembly command.
Sources & review
Source record details
- Source availability
- Active
- Sources checked
- 12 October 2026
- Original website title
- fjl/geas · Official homepage title · retained in its source language

