Skip to content
Subway SeatSubway SeatSubway Seat
← All ports

Agents

opencode

Walnut and Tunnel each pair with Enamel, and opencode switches halves with your terminal's background. subway-seat-enamel stays light whatever the terminal says.

Showing WalnutTunnelEnamelMoquetteDeep LevelPortlandGuimardCatacombesCarrelage. Switch flavors with the bullets up top.

opencode Report a problem with this portReport a problem with this portReport a problem with this portReport a problem with this portReport a problem with this portReport a problem with this portReport a problem with this portReport a problem with this portReport a problem with this port

The quick way

The installer sets it up for you, then tells you the one thing it can't do. More ways to install

curl -fsSL https://oddurs.github.io/subway-seat/install.sh | sh -s -- --flavor walnut --only opencode
curl -fsSL https://oddurs.github.io/subway-seat/install.sh | sh -s -- --flavor tunnel --only opencode
curl -fsSL https://oddurs.github.io/subway-seat/install.sh | sh -s -- --flavor enamel --only opencode
curl -fsSL https://oddurs.github.io/subway-seat/install.sh | sh -s -- --flavor moquette --only opencode
curl -fsSL https://oddurs.github.io/subway-seat/install.sh | sh -s -- --flavor deep --only opencode
curl -fsSL https://oddurs.github.io/subway-seat/install.sh | sh -s -- --flavor portland --only opencode
curl -fsSL https://oddurs.github.io/subway-seat/install.sh | sh -s -- --flavor guimard --only opencode
curl -fsSL https://oddurs.github.io/subway-seat/install.sh | sh -s -- --flavor catacombes --only opencode
curl -fsSL https://oddurs.github.io/subway-seat/install.sh | sh -s -- --flavor carrelage --only opencode

Turn it on

In ~/.config/opencode/tui.json after copying the theme to ~/.config/opencode/themes/, or pick it with /theme
{
  "$schema": "https://opencode.ai/tui.json",
  "theme": "subway-seat"
}
In ~/.config/opencode/tui.json after copying the theme to ~/.config/opencode/themes/, or pick it with /theme
{
  "$schema": "https://opencode.ai/tui.json",
  "theme": "subway-seat-tunnel"
}
In ~/.config/opencode/tui.json after copying the theme to ~/.config/opencode/themes/, or pick it with /theme
{
  "$schema": "https://opencode.ai/tui.json",
  "theme": "subway-seat-enamel"
}
In ~/.config/opencode/tui.json after copying the theme to ~/.config/opencode/themes/, or pick it with /theme
{
  "$schema": "https://opencode.ai/tui.json",
  "theme": "london-moquette"
}
In ~/.config/opencode/tui.json after copying the theme to ~/.config/opencode/themes/, or pick it with /theme
{
  "$schema": "https://opencode.ai/tui.json",
  "theme": "london-deep-level"
}
In ~/.config/opencode/tui.json after copying the theme to ~/.config/opencode/themes/, or pick it with /theme
{
  "$schema": "https://opencode.ai/tui.json",
  "theme": "london-portland"
}
In ~/.config/opencode/tui.json after copying the theme to ~/.config/opencode/themes/, or pick it with /theme
{
  "$schema": "https://opencode.ai/tui.json",
  "theme": "paris-guimard"
}
In ~/.config/opencode/tui.json after copying the theme to ~/.config/opencode/themes/, or pick it with /theme
{
  "$schema": "https://opencode.ai/tui.json",
  "theme": "paris-catacombes"
}
In ~/.config/opencode/tui.json after copying the theme to ~/.config/opencode/themes/, or pick it with /theme
{
  "$schema": "https://opencode.ai/tui.json",
  "theme": "paris-carrelage"
}

Follow light and dark

One setting that changes with your system’s light and dark mode, no switching by hand.

In ~/.config/opencode/tui.json: Walnut and Tunnel carry Enamel as their light half
{
  "$schema": "https://opencode.ai/tui.json",
  "theme": "subway-seat"
}

The files

subway-seat.jsonsave as ~/.config/opencode/themes/subway-seat.json
{
  "$schema": "https://opencode.ai/theme.json",
  "defs": {
    "walnutCrust": "#20160E",
    "walnutMantle": "#2A1D13",
    "walnutBase": "#362619",
    "walnutSurface0": "#43301F",
    "walnutSurface1": "#513B27",
    "walnutSurface2": "#634932",
    "walnutOverlay0": "#7B6047",
    "walnutOverlay1": "#967B5C",
    "walnutOverlay2": "#AE9575",
    "walnutSubtext0": "#C4AE8C",
    "walnutSubtext1": "#D9C6A3",
    "walnutText": "#EDDCBC",
    "walnutTextHi": "#F8ECD4",
    "walnutYellow": "#F3BF45",
    "walnutYellowHi": "#FFD36B",
    "walnutOrange": "#EC7F31",
    "walnutOrangeHi": "#FF9D55",
    "walnutRed": "#E05C45",
    "walnutRedHi": "#FF8373",
    "walnutGreen": "#ADB956",
    "walnutGreenHi": "#BFCB63",
    "walnutSage": "#86AD95",
    "walnutSageHi": "#A5C9B0",
    "walnutDenim": "#7F9BAE",
    "walnutDenimHi": "#9DB6C6",
    "walnutClay": "#F4A87E",
    "enamelCrust": "#E4D8C0",
    "enamelMantle": "#EEE4D0",
    "enamelBase": "#F8EFDF",
    "enamelSurface0": "#DBCDB3",
    "enamelSurface1": "#CBB898",
    "enamelSurface2": "#BAA380",
    "enamelOverlay0": "#A58D6D",
    "enamelOverlay1": "#8C7254",
    "enamelOverlay2": "#735C44",
    "enamelSubtext0": "#654F3B",
    "enamelSubtext1": "#54402F",
    "enamelText": "#3E2C1E",
    "enamelTextHi": "#2A1D13",
    "enamelYellow": "#976608",
    "enamelYellowHi": "#A9720A",
    "enamelOrange": "#A04800",
    "enamelOrangeHi": "#BA4D0A",
    "enamelRed": "#992418",
    "enamelRedHi": "#BF4233",
    "enamelGreen": "#66740F",
    "enamelGreenHi": "#697813",
    "enamelSage": "#3E7157",
    "enamelSageHi": "#4C8367",
    "enamelDenim": "#3F6480",
    "enamelDenimHi": "#517791",
    "enamelClay": "#843811"
  },
  "theme": {
    "primary": {
      "dark": "walnutOrange",
      "light": "enamelOrange"
    },
    "secondary": {
      "dark": "walnutYellow",
      "light": "enamelYellow"
    },
    "accent": {
      "dark": "walnutSage",
      "light": "enamelSage"
    },
    "error": {
      "dark": "walnutRedHi",
      "light": "enamelRedHi"
    },
    "warning": {
      "dark": "walnutYellow",
      "light": "enamelYellow"
    },
    "success": {
      "dark": "walnutGreen",
      "light": "enamelGreen"
    },
    "info": {
      "dark": "walnutDenim",
      "light": "enamelDenim"
    },
    "text": {
      "dark": "walnutText",
      "light": "enamelText"
    },
    "textMuted": {
      "dark": "walnutOverlay2",
      "light": "enamelOverlay2"
    },
    "selectedListItemText": {
      "dark": "walnutCrust",
      "light": "enamelBase"
    },
    "background": {
      "dark": "walnutBase",
      "light": "enamelBase"
    },
    "backgroundPanel": {
      "dark": "walnutSurface0",
      "light": "enamelMantle"
    },
    "backgroundElement": {
      "dark": "walnutSurface1",
      "light": "enamelCrust"
    },
    "backgroundMenu": {
      "dark": "#43301F",
      "light": "#FCF7EF"
    },
    "border": {
      "dark": "walnutSurface2",
      "light": "enamelSurface2"
    },
    "borderActive": {
      "dark": "walnutOverlay0",
      "light": "enamelOverlay0"
    },
    "borderSubtle": {
      "dark": "walnutSurface1",
      "light": "enamelSurface1"
    },
    "diffAdded": {
      "dark": "walnutGreen",
      "light": "enamelGreen"
    },
    "diffRemoved": {
      "dark": "walnutRedHi",
      "light": "enamelRedHi"
    },
    "diffContext": {
      "dark": "walnutOverlay1",
      "light": "enamelOverlay1"
    },
    "diffHunkHeader": {
      "dark": "walnutDenim",
      "light": "enamelDenim"
    },
    "diffHighlightAdded": {
      "dark": "walnutGreenHi",
      "light": "enamelGreen"
    },
    "diffHighlightRemoved": {
      "dark": "walnutRedHi",
      "light": "enamelRed"
    },
    "diffAddedBg": {

Showing 150 of 267 lines.

subway-seat-tunnel.jsonsave as ~/.config/opencode/themes/subway-seat-tunnel.json
{
  "$schema": "https://opencode.ai/theme.json",
  "defs": {
    "tunnelCrust": "#140D07",
    "tunnelMantle": "#1B120A",
    "tunnelBase": "#24180E",
    "tunnelSurface0": "#302115",
    "tunnelSurface1": "#3D2C1D",
    "tunnelSurface2": "#4F3927",
    "tunnelOverlay0": "#745B45",
    "tunnelOverlay1": "#917759",
    "tunnelOverlay2": "#AA9171",
    "tunnelSubtext0": "#C0AA88",
    "tunnelSubtext1": "#D6C3A0",
    "tunnelText": "#E9D8B6",
    "tunnelTextHi": "#F6EAD1",
    "tunnelYellow": "#F3BF45",
    "tunnelYellowHi": "#FFD36B",
    "tunnelOrange": "#EC7F31",
    "tunnelOrangeHi": "#FF9D55",
    "tunnelRed": "#E05C45",
    "tunnelRedHi": "#FF8373",
    "tunnelGreen": "#ADB956",
    "tunnelGreenHi": "#BFCB63",
    "tunnelSage": "#86AD95",
    "tunnelSageHi": "#A5C9B0",
    "tunnelDenim": "#7F9BAE",
    "tunnelDenimHi": "#9DB6C6",
    "tunnelClay": "#F4A87E",
    "enamelCrust": "#E4D8C0",
    "enamelMantle": "#EEE4D0",
    "enamelBase": "#F8EFDF",
    "enamelSurface0": "#DBCDB3",
    "enamelSurface1": "#CBB898",
    "enamelSurface2": "#BAA380",
    "enamelOverlay0": "#A58D6D",
    "enamelOverlay1": "#8C7254",
    "enamelOverlay2": "#735C44",
    "enamelSubtext0": "#654F3B",
    "enamelSubtext1": "#54402F",
    "enamelText": "#3E2C1E",
    "enamelTextHi": "#2A1D13",
    "enamelYellow": "#976608",
    "enamelYellowHi": "#A9720A",
    "enamelOrange": "#A04800",
    "enamelOrangeHi": "#BA4D0A",
    "enamelRed": "#992418",
    "enamelRedHi": "#BF4233",
    "enamelGreen": "#66740F",
    "enamelGreenHi": "#697813",
    "enamelSage": "#3E7157",
    "enamelSageHi": "#4C8367",
    "enamelDenim": "#3F6480",
    "enamelDenimHi": "#517791",
    "enamelClay": "#843811"
  },
  "theme": {
    "primary": {
      "dark": "tunnelOrange",
      "light": "enamelOrange"
    },
    "secondary": {
      "dark": "tunnelYellow",
      "light": "enamelYellow"
    },
    "accent": {
      "dark": "tunnelSage",
      "light": "enamelSage"
    },
    "error": {
      "dark": "tunnelRedHi",
      "light": "enamelRedHi"
    },
    "warning": {
      "dark": "tunnelYellow",
      "light": "enamelYellow"
    },
    "success": {
      "dark": "tunnelGreen",
      "light": "enamelGreen"
    },
    "info": {
      "dark": "tunnelDenim",
      "light": "enamelDenim"
    },
    "text": {
      "dark": "tunnelText",
      "light": "enamelText"
    },
    "textMuted": {
      "dark": "tunnelOverlay2",
      "light": "enamelOverlay2"
    },
    "selectedListItemText": {
      "dark": "tunnelCrust",
      "light": "enamelBase"
    },
    "background": {
      "dark": "tunnelBase",
      "light": "enamelBase"
    },
    "backgroundPanel": {
      "dark": "tunnelSurface0",
      "light": "enamelMantle"
    },
    "backgroundElement": {
      "dark": "tunnelSurface1",
      "light": "enamelCrust"
    },
    "backgroundMenu": {
      "dark": "#302115",
      "light": "#FCF7EF"
    },
    "border": {
      "dark": "tunnelSurface2",
      "light": "enamelSurface2"
    },
    "borderActive": {
      "dark": "tunnelOverlay0",
      "light": "enamelOverlay0"
    },
    "borderSubtle": {
      "dark": "tunnelSurface1",
      "light": "enamelSurface1"
    },
    "diffAdded": {
      "dark": "tunnelGreen",
      "light": "enamelGreen"
    },
    "diffRemoved": {
      "dark": "tunnelRedHi",
      "light": "enamelRedHi"
    },
    "diffContext": {
      "dark": "tunnelOverlay1",
      "light": "enamelOverlay1"
    },
    "diffHunkHeader": {
      "dark": "tunnelDenim",
      "light": "enamelDenim"
    },
    "diffHighlightAdded": {
      "dark": "tunnelGreenHi",
      "light": "enamelGreen"
    },
    "diffHighlightRemoved": {
      "dark": "tunnelRedHi",
      "light": "enamelRed"
    },
    "diffAddedBg": {

Showing 150 of 267 lines.

subway-seat-enamel.jsonsave as ~/.config/opencode/themes/subway-seat-enamel.json
{
  "$schema": "https://opencode.ai/theme.json",
  "defs": {
    "enamelCrust": "#E4D8C0",
    "enamelMantle": "#EEE4D0",
    "enamelBase": "#F8EFDF",
    "enamelSurface0": "#DBCDB3",
    "enamelSurface1": "#CBB898",
    "enamelSurface2": "#BAA380",
    "enamelOverlay0": "#A58D6D",
    "enamelOverlay1": "#8C7254",
    "enamelOverlay2": "#735C44",
    "enamelSubtext0": "#654F3B",
    "enamelSubtext1": "#54402F",
    "enamelText": "#3E2C1E",
    "enamelTextHi": "#2A1D13",
    "enamelYellow": "#976608",
    "enamelYellowHi": "#A9720A",
    "enamelOrange": "#A04800",
    "enamelOrangeHi": "#BA4D0A",
    "enamelRed": "#992418",
    "enamelRedHi": "#BF4233",
    "enamelGreen": "#66740F",
    "enamelGreenHi": "#697813",
    "enamelSage": "#3E7157",
    "enamelSageHi": "#4C8367",
    "enamelDenim": "#3F6480",
    "enamelDenimHi": "#517791",
    "enamelClay": "#843811"
  },
  "theme": {
    "primary": "enamelOrange",
    "secondary": "enamelYellow",
    "accent": "enamelSage",
    "error": "enamelRedHi",
    "warning": "enamelYellow",
    "success": "enamelGreen",
    "info": "enamelDenim",
    "text": "enamelText",
    "textMuted": "enamelOverlay2",
    "selectedListItemText": "enamelBase",
    "background": "enamelBase",
    "backgroundPanel": "enamelMantle",
    "backgroundElement": "enamelCrust",
    "backgroundMenu": "#FCF7EF",
    "border": "enamelSurface2",
    "borderActive": "enamelOverlay0",
    "borderSubtle": "enamelSurface1",
    "diffAdded": "enamelGreen",
    "diffRemoved": "enamelRedHi",
    "diffContext": "enamelOverlay1",
    "diffHunkHeader": "enamelDenim",
    "diffHighlightAdded": "enamelGreen",
    "diffHighlightRemoved": "enamelRed",
    "diffAddedBg": "#D7DBC1",
    "diffRemovedBg": "#EBD3D1",
    "diffContextBg": "enamelBase",
    "diffLineNumber": "enamelOverlay0",
    "diffAddedLineNumberBg": "#E9E3CA",
    "diffRemovedLineNumberBg": "#EED9C9",
    "markdownText": "enamelText",
    "markdownHeading": "enamelYellow",
    "markdownLink": "enamelDenim",
    "markdownLinkText": "enamelDenimHi",
    "markdownCode": "enamelGreen",
    "markdownBlockQuote": "enamelSubtext0",
    "markdownEmph": "enamelText",
    "markdownStrong": "enamelTextHi",
    "markdownHorizontalRule": "enamelOverlay0",
    "markdownListItem": "enamelOrange",
    "markdownListEnumeration": "enamelOrange",
    "markdownImage": "enamelDenim",
    "markdownImageText": "enamelDenimHi",
    "markdownCodeBlock": "enamelText",
    "syntaxComment": "enamelOverlay1",
    "syntaxKeyword": "enamelOrange",
    "syntaxFunction": "enamelYellow",
    "syntaxVariable": "enamelText",
    "syntaxString": "enamelGreen",
    "syntaxNumber": "enamelRedHi",
    "syntaxType": "enamelSage",
    "syntaxOperator": "enamelOverlay2",
    "syntaxPunctuation": "enamelOverlay2"
  }
}