---
title: "Custom Buildpacks, Headless CI/CD, and Open Commands"
date: 2021-05-21T14:00:00.000-07:00
number: 0030
url: https://railway.com/changelog/2021-05-21
---

# Custom Buildpacks, Headless CI/CD, and Open Commands

## Custom Buildpacks

Buildpacks can now be specified via a project.toml file, exactly as they're defined by the CloudNative Buildpacks guideline.

For example, you can use the yarn buildpack by simply adding the following to a `project.toml` file:

```go
[[build.buildpacks]]
uri = "heroku/nodejs"

[[build.buildpacks]]
uri = "heroku/nodejs-yarn"
```

URLs, Paths, Directories. If a path is relative, it much be relative to the project.toml. See the [Cloud Native Buildpack Docs](https://buildpacks.io/docs/app-developer-guide/using-project-descriptor/) for more info!

## Headless CI/CD

All commands for the CLI have been setup such that they now accept a project token. 

[Image: Untitled]

This means you can now run commands like `RAILWAY_TOKEN=<token> railway up` as part of the final step in your external CI to build your own deployment pipelines!

## CLI Open Commands

The CLI open commands have been expanded to include

- `railway open`: The open you know and love. Still on the dashboard
- `railway open metrics`: Open your metrics page. (Aliased as m)
- `railway open settings`: Open your settings page (aliased to s)
- `railway open live`: Open your deployed app (aliased to l)

## Blog and Starters

We published a new blog post this week about how to self-host Calendso (an open-source Calendly alternative)! Check it out [here](http://blog.railway.app/calendso).

We also have some new starters

- [Calendso](https://github.com/railwayapp/starters/tree/master/examples/calendso)
- [Ghost](https://github.com/railwayapp/starters/tree/master/examples/ghost)

## Improvements and Fixes

- CLI: [Docker run uses the PORT env var if it exists](https://github.com/railwayapp/cli/pull/114)
- Docker layers are now cached for 24 hours, resetting on each push
- Use a trash can icon for deleting env vars to hopefully make it more obvious
- Toasts can be dismissed
- Custom domain is displayed on the dashboard for each project if it exists
- Dashboard performance was improved