OpenViSTAI · Agents · Blockchain · Crypto
Menu
Developer Tools

Geas

Geas is a Go-based macro assembler for the Ethereum Virtual Machine. Developers write EVM instructions and assembly constructs, then use its command-line tool to assemble contract bytecode or disassemble hexadecimal bytecode.

Independent OpenViST project profile, based on linked sources.

Geas — OpenViST project profile in Developer Tools.
OpenViST project illustration. See the linked sources for product details.
Understand the project

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.
Before you choose

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.

Source-based practical guide

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

  1. Run env "GOBIN=$PWD" go install github.com/fjl/geas/cmd/geas@latest to install the latest released version into the current directory.

  2. Run ./geas -a file.eas, replacing file.eas with 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.
Source-based practical guide

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

  1. Supply the hexadecimal bytecode to Geas on standard input.

  2. 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.
Evidence and transparency

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