Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time
December 23, 2022 21:35
April 5, 2020 18:42
June 18, 2022 18:06
December 15, 2020 20:10
September 23, 2022 19:54
May 11, 2018 18:32
January 28, 2018 09:19
January 28, 2018 09:19
February 26, 2023 08:13
October 16, 2019 18:48
March 22, 2020 12:57
January 18, 2020 17:35

{}j Agoo

Build Status Gem Version Gem TideLift

A High Performance HTTP Server for Ruby



require 'agoo'

Agoo::Server.init(6464, 'root')

class MyHandler
  def call(req)
    [ 200, { }, [ "hello world" ] ]

handler =
Agoo::Server.handle(:GET, "/hello", handler)

# To run this example type the following then go to a browser and enter a URL
# of localhost:6464/hello.
# ruby hello.rb


require 'agoo'

class Query
  def hello

class Schema
  attr_reader :query

  def initialize
    @query =

Agoo::Server.init(6464, 'root', thread_count: 1, graphql: '/graphql')
Agoo::GraphQL.schema( {
  Agoo::GraphQL.load(%^type Query { hello: String }^)

# To run this GraphQL example type the following then go to a browser and enter
# a URL of localhost:6464/graphql?query={hello}
# ruby hello.rb


gem install agoo

Using agoo as server for rails

As agoo supports rack compatible apps you can use it for rails applications:

Add agoo to the Gemfile:

# Gemfile
gem 'agoo'

Install bundle:

$ bundle install

Start rails with agoo as server:

$ rails server -u agoo

Enjoy the increased performance!

What Is This?

Agoo is Japanese for a type of flying fish. This gem flies. It is a high performance HTTP server that serves static resource at hundreds of thousands of fetches per second. A simple hello world Ruby handler at over 100,000 requests per second on a desktop computer. That places Agoo at about 85 times faster than Sinatra and 1000 times faster than Rails. In both cases the latency was two orders of magnitude lower or more. Checkout the benchmarks. Note that the benchmarks had to use a C program called Perfer to hit the Agoo limits. Ruby benchmarks driver could not push Agoo hard enough.

Agoo supports the Ruby rack API which allows for the use of rack compatible gems such as Hanami and Rails. Agoo also supports WebSockets and SSE.

Agoo is not available on Windows.


  • Version 2.11.0 supports GraphQL subscriptions. TLS (SSL,HTTPS) support added. Examples for both. Related, the graphql-benchmark repo was given to the-benchmarker.

  • Agoo has a new GraphQL module with a simple, easy to use API. Checkout the hello or song examples. An Instrumental Intro to GraphQL with Ruby is a walk through.

  • Agoo takes first place as the highest throughput on web-frameworks benchmarks. Latency was not at the top but release 2.5.2 improves that. The Agoo-C benchmarks it at the top. The fastest web server across all languages.

  • Clustered Agoo is ready. For slower application and a machine with multiple cores a significant improvement is performance is realized. The application must be stateless in that no data is shared between workers.

  • WebSocket and SSE are supported and a PR has been submitted to updated the Rack spec. Go over to the proposed Rack extension and give it a look and a thumbs-up or heart if you like it.

  • Agoo now serves Rails static assets more than 8000 times faster than the default Puma. Thats right, 8000 times faster.



Releases are made from the master branch. The default branch for checkout is the develop branch. Pull requests should be made against the develop branch.


Get supported Agoo with a Tidelift Subscription. Security updates are supported.