Greg Brockman

Read this first

OpenAI Five intro

The text of my speech introducing OpenAI Five at yesterday’s Benchmark event:

“We’re here to watch humans and AI play Dota, but today’s match will have implications for the world. OpenAI’s mission is to ensure that when we can build machines as smart as humans, they will benefit all of humanity. That means both pushing the limits of what’s possible and ensuring future systems are safe and aligned with human values.

We work on Dota because it is a great training ground for AI: it is one of the most complicated games, involving teamwork, real time strategy, imperfect information, and an astronomical combinations of heroes and items.

We can’t program a solution, so Five learns by playing 180 years of games against itself every day — sadly that means we can’t learn from the players up here unless they played for a few decades. It’s powered by 5 artificial neural networks which act like an...

Continue reading →

#define CTO OpenAI

It’s been two years since I wrote #define CTO, in which I documented my quest for a role where I could have scalable impact by writing code. I’ve finally found that role, though not by seeking it — instead, I sought out a problem more important to me than my role within it, brought together the right people, and found that I can best make them effective by writing code.


In August 2015, OpenAI was just an idea articulated over a dinner with Elon Musk, Sam Altman, Ilya Sutskever, me, and a handful of others. We’d each come to the dinner with our own ideas, but Elon and Sam had a crisp vision of building safe AI in a project dedicated to benefiting humanity. I wanted to contribute however I could. Sam and I started rallying a team to turn this idea into reality.

We were missing a core ingredient: we needed an AI technical visionary, someone whose intuition and ideas we could...

Continue reading →

My path to OpenAI

I started programming seriously during a gap year after high school. I’d read Turing’s Computing Machinery and Intelligence, and was inspired by the notion of writing code that could understand something that I, as the code’s author, did not. I started writing a chatbot — how hard could it possibly be?

I managed to build something that could talk about the weather very convincingly. But no matter where I looked, it seemed that no one had any techniques that could make my bot really work.

I soon shelved my chatbot pursuits. I decided to focus on creating systems that can have a real impact, and have been doing that ever since.


In college, I found a field that captured what drew me to AI: programming languages. I was thrilled that a compiler or static analyzer could “understand” a program in a way that I couldn’t, and then apply that understanding to do something very useful...

Continue reading →

Stellar board

I’ve been advising Stellar since Stripe helped it launch about a year ago. Today I’m joining their board.

Digital currencies are still nascent, and my hopes for them remain unchanged. Particularly, we need digital currency protocols like Stellar that work with the existing financial system and focus on a seamless user experience.

I’ve always been impressed with Joyce, Jed, and their team’s approach to the space. Stellar is a non-profit entity producing open-source software, with a strong emphasis on financial inclusion. From launch day, they’ve been hyperfocused on the core technology and community. In the past year, they’ve made strong progress, including a provably-correct consensus algorithm (complete with explanatory graphic novel), a redesign and from-scratch implementation of the technology, and the groundwork for a pilot in South Africa.

Building anything valuable takes time...

Continue reading →

Recurse Center

Coding requires collaboration. As Andrew Bosworth said recently: doing anything meaningful past a certain point requires more than one person. So if you want to build, it’s important to do so as part of a welcoming, collaborative environment.

One environment I’ve long admired is that of the Recurse Center (formerly known as Hacker School). They’ve been unusually thoughtful about the dynamics of their culture. I’ve always thought that if I had three months to spare, I would attend a batch to experience the community directly (and hopefully contribute back however I can).

And, well, now I have that kind of time.

I was initially surprised by how many experienced engineers told me that they too would attend a Recurse Center batch, if only they could make the timing and logistics work. But I think it shows that no matter how long you’ve been coding, there will always be areas of...

Continue reading →

Leaving Stripe

I originally got hooked on programming because I loved the act of creating something from nothing. I soon discovered the deep satisfaction of having others actually use my creations. It didn’t take me long to realize I wanted to build a startup.


Throughout college, I tried working on a bunch of startup ideas, none of which went anywhere. From each I learned another thing not to do (“don’t blindly follow someone just because they have an MBA”). I knew I needed to learn more, to find the right collaborators, before I could hope to be successful on my own.

When I met Patrick, John, and Darragh, who were working on a stealth-mode startup called /dev/payments, I knew my search was over. I left school to join their founding team.

Over time, my role evolved as I did whatever was needed to help make the company more successful. About six months ago, I found myself in a strangely...

Continue reading →

#define CTO

I joined Stripe as an engineer in 2010. I began by working on the backend infrastructure: designing the server architecture, creating our credit card vault, and producing internal abstractions to make people’s jobs easier. I loved writing code, but I also spent a bunch of time on other things: figuring out our recruiting program, shaping the culture, or making our first T-shirts (which have been banned since we hired our first designer). I wasn’t doing these things particularly because I preferred them to coding: instead, I had a very strong vision of the environment I wanted to be a part of, and I was willing to go out of my way to make it exist.

As time went on, I accumulated more and more responsibilities which were not strictly writing code. As Nelson Elhage liked to put it, my job became full-time “early employee”. My days were filled with writing cultural guides, acclimatizing new...

Continue reading →

A Twitter bot which issues its own currency

(Update: I’ve now taken my instance of the bot down, but the code should still work if you want to run your own.)

I spent some time this weekend putting together a proof-of-concept Twitter bot which issues its own “upvote” currency. You use it by tweeting something like the following:

@stellarjob +++@thegdb cool bot!

Live demo

!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);;js.src=p+'://';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');

The bot then walks the user through linking their Stellar account and extending trust for its +++ currency. Once the trust has been granted, the bot issues a +++ credit. Each subsequent upvote results in another +++ being issued.

Because the credits are issued on Stellar, they can be...

Continue reading →

What to build on Stellar

Many people have started building Stellar applications and infrastructure, but even more have been asking for suggestions or a place to get started. Here are a few examples of the kinds of things you could build on top of Stellar. They’re not all new ideas, but they would be new to the Stellar ecosystem.


  • Games. Many games already have virtual credits. Imagine embedding those credits into the Stellar ledger (or just making those credits be stellars). This would make them instantly tradable, and something that users could bring with them from game to game.
  • Psychology experiments (just let people know that they’re in an experiment). There are many classic experiments, such as the dollar auction, which are really interesting to read about. With Stellar, you could actually implement them and see how people behave in practice.
  • Apps for tracking and paying back expenses among...

Continue reading →

Setting up federated addresses with Stellar

Fun fact: the username you sign up with on Stellar’s hosted web client is actually a federated address rather than a username. That is, the username gdb is actually short for If you control a domain, you can set up federated addresses for your domain.

We’ve now set up federated addresses on You can now use your client to make a payment to

 Setting up federation

You can set up federation for your domain too — it’s pretty easy (though per the below, the protocol may end up being changed). I’ll walk you through how a client or browser resolves


First, the client finds Stripe’s stellar.txt file by requesting the following URLs until one works:


We’ve set up our stellar.txt on, which is served as...

Continue reading →