Runway
Runway is built and operated in the EU!
<- the latest

July 2026 Updates - Storage expansion, API keys, and deploy sources

Till Klampaeckel
Posted by: Till Klampaeckel
3 August 2026

July shipped a mix — you can now grow the storage on your PostgreSQL databases, API keys landed with flexible expiration, and every deployment now records where it came from.

Expand storage

Good news for anyone running low on space: you can now resize the storage of your PostgreSQL services.

From the Runway CLI:

# show volumes
runway volume ls
...
# grow volume
runway volume set <volume-id> 15000

Runway UI: volumes In the Runway UI, volumes now appear on the service page. The “manage” link takes you into the account section for the full view.

Resize is the only action for now, but we’re exploring custom volumes for Runway Apps — custom mount points and attach/detach, all managed in the same place.

Full management view:

Runway UI: volumes in the profile

Growing a volume takes a bit of time, so the state you see in runway volume ls or the UI is eventually consistent while Runway expands the volume and refreshes the service. Sometimes services will failover and reboot as part of it, but that happens without interruption.

Storage expansion is available to service creators on Scale plans and above, as it incurs charges. The price is €0.50/GB/month (50 € cents).

API keys

Runway now supports API keys, valid for up to a year. Why bother?

Use them for CI/CD deployments instead of sharing your username and password. They’re also a good fit for MCP sessions — no timeout to worry about.

The key part is that expiration is flexible. Need to let another tool poke at your account for an hour? Set a one-hour expiration and forget about revoking it. Longer-lived integration? Set a year.

API keys are available in the Runway CLI:

# list all keys
runway api-key ls
     Name      Status       Created           Expires          Last Used     
 setup-runway  ACTIVE   2026-07-24 10:25  2027-07-24 10:25  2026-07-24 10:53 
 test-now      REVOKED  2026-07-20 14:43  2026-08-20 12:11  2026-07-20 15:14 
 test-123      REVOKED  2026-07-20 14:17  2027-07-20 14:17  2026-07-20 14:19 
 newtest       ACTIVE   2026-07-27 11:12  2026-07-27 12:12  never            
 newtest       ACTIVE   2026-07-27 11:12  2026-07-28 11:12  never            
 jkhjkhjkhjk   ACTIVE   2026-07-24 21:39  2026-07-24 22:39  never  

Manage keys

Create a new key with a one-hour expiration:

# create a new key
runway api-key create new-key 1h
  ╭──╮                                                               
 ◜│  │◝                                                              
  ◯  ◯   Create API key "new-key" with expiration 1h. Is that okay?  
  │  │╭                                                              
  │◟_◞│                                                              
  ╰───╯                                                              
api-key creation: done
  Name    Status       Created            Expires       Last Used 
 new-key  ACTIVE  about a second ago  in about an hour  never     

Secret (store it now - it will not be shown again):
runway_v1_XXX...

Revoke it:

# get the key-id
runway api-key ls --full
                Key ID                     Name      Status        Created            Expires          Last Used     
 8352499a-fe0d-4a9d-af02-601a834ffd32  new-key       ACTIVE   about a minute ago  in 59 minutes     never   
runway api-key revoke 8352499a-fe0d-4a9d-af02-601a834ffd32
  ╭──╮                                                                         
 ◜│  │◝                                                                        
  ◕  ◕   Revoking api-key 8352499a-fe0d-4a9d-af02-601a834ffd32. Is that okay?  
  │  │╭                                                                        
  │◟_◞│                                                                        
  ╰───╯                                                                        
api-key removal: done

Key management is also in the UI, in the same place as your SSH keys:

Runway UI: Profile with SSH and API keys

To use an API key from the CLI, sign in with it:

# temporarily disable history
set +o history
export RUNWAY_API_KEY=key...
set -o history
runway login

Or in CI with our GitHub Action - please star:

- uses: hostwithquantum/setup-runway@v0.6.0
  with:
    api-key: ${{ secrets.RUNWAY_API_KEY }}

Or with curl:

# temporarily disable history
set +o history
export RUNWAY_API_KEY=key...
set -o history
curl -H "X-Runway-Api-Key: ${RUNWAY_API_KEY}" \
  https://api.runway.horse/v3/apps

Deploy sources

Every deployment now records where it came from — surfaced in both the CLI and the UI:

runway app ls

And in the UI:

Runway UI: Deploy sources

Aside from being a handy audit trail, the source records also carry SBOM information — we’re planning to use that for a couple of new features, and we might expose it via API too. :)

runway app exec polish

runway app exec gives you an interactive shell into your running Runway app processes. This month we improved the environment for apps built via our buildpacks (which is the majority).

For example, if you run a Node.js app, node and npm are now on your PATH — no more wrangling with the /layers/... directories to piece things together.

That makes ad-hoc tasks a lot easier. If you want to run something on a schedule (via GitHub Actions, say), runway app exec "node script.js" now just works.

Feedback

Feedback matters — as anyone running a product or service will tell you. We’re often blind to the little things, so we appreciate every message a lot. Thanks to Andreas, Fabian, Henrik, and Sebastian for writing in. :)

On that note, a few small changes landed this month based on what you told us:

Bug fixes

runway app config set is now idempotent — a new release only rolls out when values actually change. Sorry about that!

FIN

That’s it for July. As always, give the new bits a spin and let us know what you think — and if you’re new here: Runway runs your apps and managed databases, hosted entirely in the EU.