diff --git a/common/api.py b/common/api.py
index ac231400a..0cd9c529a 100644
--- a/common/api.py
+++ b/common/api.py
@@ -5,7 +5,7 @@ from datetime import datetime, timedelta, UTC
from openpilot.system.hardware.hw import Paths
from openpilot.system.version import get_version
-API_HOST = os.getenv('API_HOST', 'https://api.commadotai.com')
+API_HOST = os.getenv('API_HOST', 'https://api.konik.ai')
class Api:
def __init__(self, dongle_id):
diff --git a/selfdrive/ui/layouts/settings/device.py b/selfdrive/ui/layouts/settings/device.py
index df8bba030..b0a21795d 100644
--- a/selfdrive/ui/layouts/settings/device.py
+++ b/selfdrive/ui/layouts/settings/device.py
@@ -17,7 +17,7 @@ from openpilot.system.ui.widgets.scroller import Scroller
# Description constants
DESCRIPTIONS = {
- 'pair_device': "Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer.",
+ 'pair_device': "Pair your device with konik stable (connect.konik.ai).",
'driver_camera': "Preview the driver facing camera to ensure that driver monitoring has good visibility. (vehicle must be off)",
'reset_calibration': (
"openpilot requires the device to be mounted within 4° left or right and within 5° " +
diff --git a/selfdrive/ui/qt/api.h b/selfdrive/ui/qt/api.h
index ad64d7e72..e34a05589 100644
--- a/selfdrive/ui/qt/api.h
+++ b/selfdrive/ui/qt/api.h
@@ -9,7 +9,7 @@
namespace CommaApi {
-const QString BASE_URL = util::getenv("API_HOST", "https://api.commadotai.com").c_str();
+const QString BASE_URL = util::getenv("API_HOST", "https://api.konik.ai").c_str();
QByteArray rsa_sign(const QByteArray &data);
QString create_jwt(const QJsonObject &payloads = {}, int expiry = 3600);
diff --git a/selfdrive/ui/qt/offroad/settings.cc b/selfdrive/ui/qt/offroad/settings.cc
index 96734d69d..663fb7f46 100644
--- a/selfdrive/ui/qt/offroad/settings.cc
+++ b/selfdrive/ui/qt/offroad/settings.cc
@@ -209,7 +209,7 @@ DevicePanel::DevicePanel(SettingsWindow *parent) : ListWidget(parent) {
addItem(new LabelControl(tr("Serial"), params.get("HardwareSerial").c_str()));
pair_device = new ButtonControl(tr("Pair Device"), tr("PAIR"),
- tr("Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer."));
+ tr("Pair your device with konik stable (stable.konik.ai) and claim your comma prime offer."));
connect(pair_device, &ButtonControl::clicked, [=]() {
PairingPopup popup(this);
popup.exec();
diff --git a/selfdrive/ui/qt/widgets/prime.cc b/selfdrive/ui/qt/widgets/prime.cc
index ee820c46a..045f4e8b0 100644
--- a/selfdrive/ui/qt/widgets/prime.cc
+++ b/selfdrive/ui/qt/widgets/prime.cc
@@ -36,7 +36,7 @@ void PairingQRWidget::hideEvent(QHideEvent *event) {
void PairingQRWidget::refresh() {
QString pairToken = CommaApi::create_jwt({{"pair", true}});
- QString qrString = "https://connect.comma.ai/?pair=" + pairToken;
+ QString qrString = "https://stable.konik.ai/?pair=" + pairToken;
this->updateQrCode(qrString);
update();
}
@@ -100,9 +100,9 @@ PairingPopup::PairingPopup(QWidget *parent) : DialogBase(parent) {
%2
%3
- )").arg(tr("Go to https://connect.comma.ai on your phone"))
+ )").arg(tr("Go to https://stable.konik.ai on your phone"))
.arg(tr("Click \"add new device\" and scan the QR code on the right"))
- .arg(tr("Bookmark connect.comma.ai to your home screen to use it like an app")), this);
+ .arg(tr("Bookmark stable.konik.ai to your home screen to use it like an app")), this);
instructions->setStyleSheet("font-size: 47px; font-weight: bold; color: black;");
instructions->setWordWrap(true);
@@ -151,7 +151,7 @@ PrimeAdWidget::PrimeAdWidget(QWidget* parent) : QFrame(parent) {
main_layout->addWidget(upgrade, 0, Qt::AlignTop);
main_layout->addSpacing(50);
- QLabel *description = new QLabel(tr("Become a comma prime member at connect.comma.ai"));
+ QLabel *description = new QLabel(tr("Become a member at stable.konik.ai"));
description->setStyleSheet("font-size: 56px; font-weight: light; color: white;");
description->setWordWrap(true);
main_layout->addWidget(description, 0, Qt::AlignTop);
@@ -196,7 +196,7 @@ SetupWidget::SetupWidget(QWidget* parent) : QFrame(parent) {
registrationTitle->setStyleSheet("font-size: 75px; font-weight: bold;");
finishRegistrationLayout->addWidget(registrationTitle);
- QLabel* registrationDescription = new QLabel(tr("Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer."));
+ QLabel* registrationDescription = new QLabel(tr("Pair your device with konik stable (stable.konik.ai)."));
registrationDescription->setWordWrap(true);
registrationDescription->setStyleSheet("font-size: 50px; font-weight: light;");
finishRegistrationLayout->addWidget(registrationDescription);
diff --git a/selfdrive/ui/widgets/pairing_dialog.py b/selfdrive/ui/widgets/pairing_dialog.py
index 63298914e..c9b81cf71 100644
--- a/selfdrive/ui/widgets/pairing_dialog.py
+++ b/selfdrive/ui/widgets/pairing_dialog.py
@@ -28,7 +28,7 @@ class PairingDialog:
except Exception as e:
cloudlog.warning(f"Failed to get pairing token: {e}")
token = ""
- return f"https://connect.comma.ai/setup?token={token}"
+ return f"https://stable.konik.ai/setup?token={token}"
def _generate_qr_code(self) -> None:
try:
@@ -113,9 +113,9 @@ class PairingDialog:
def _render_instructions(self, rect: rl.Rectangle) -> None:
instructions = [
- "Go to https://connect.comma.ai on your phone",
+ "Go to https://stable.konik.ai on your phone",
"Click \"add new device\" and scan the QR code on the right",
- "Bookmark connect.comma.ai to your home screen to use it like an app",
+ "Bookmark stable.konik.ai to your home screen to use it like an app",
]
font = gui_app.font(FontWeight.BOLD)
diff --git a/selfdrive/ui/widgets/prime.py b/selfdrive/ui/widgets/prime.py
index 6b601f6df..3717006d2 100644
--- a/selfdrive/ui/widgets/prime.py
+++ b/selfdrive/ui/widgets/prime.py
@@ -34,7 +34,7 @@ class PrimeWidget(Widget):
# Description with wrapping
desc_y = y + 140
font = gui_app.font(FontWeight.LIGHT)
- wrapped_text = "\n".join(wrap_text(font, "Become a comma prime member at connect.comma.ai", 56, int(w)))
+ wrapped_text = "\n".join(wrap_text(font, "Become a konik member at stable.konik.ai", 56, int(w)))
text_size = measure_text_cached(font, wrapped_text, 56)
rl.draw_text_ex(font, wrapped_text, rl.Vector2(x, desc_y), 56, 0, rl.WHITE)
diff --git a/selfdrive/ui/widgets/setup.py b/selfdrive/ui/widgets/setup.py
index 35a7c4101..b606d0af1 100644
--- a/selfdrive/ui/widgets/setup.py
+++ b/selfdrive/ui/widgets/setup.py
@@ -38,7 +38,7 @@ class SetupWidget(Widget):
y += 113 # 75 + 38 spacing
# Description
- desc = "Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer."
+ desc = "Pair your device with konik stable (stable.konik.ai) and claim your comma prime offer."
light_font = gui_app.font(FontWeight.LIGHT)
wrapped = wrap_text(light_font, desc, 50, int(w))
for line in wrapped:
diff --git a/system/athena/athenad.py b/system/athena/athenad.py
index 6ed53b759..dbb7d4f42 100755
--- a/system/athena/athenad.py
+++ b/system/athena/athenad.py
@@ -41,7 +41,7 @@ from openpilot.system.version import get_build_metadata
from openpilot.system.hardware.hw import Paths
-ATHENA_HOST = os.getenv('ATHENA_HOST', 'wss://athena.comma.ai')
+ATHENA_HOST = os.getenv('ATHENA_HOST', 'wss://athena.konik.ai')
HANDLER_THREADS = int(os.getenv('HANDLER_THREADS', "4"))
LOCAL_PORT_WHITELIST = {22, } # SSH
diff --git a/tools/cabana/cabana.cc b/tools/cabana/cabana.cc
index 97f178b1f..648d4d1d9 100644
--- a/tools/cabana/cabana.cc
+++ b/tools/cabana/cabana.cc
@@ -21,7 +21,7 @@ int main(int argc, char *argv[]) {
QCommandLineParser cmd_parser;
cmd_parser.addHelpOption();
- cmd_parser.addPositionalArgument("route", "the drive to replay. find your drives at connect.comma.ai");
+ cmd_parser.addPositionalArgument("route", "the drive to replay. find your drives at stable.konik.ai");
cmd_parser.addOption({"demo", "use a demo route instead of providing your own"});
cmd_parser.addOption({"auto", "Auto load the route from the best available source (no video): internal, openpilotci, comma_api, car_segments, testing_closet"});
cmd_parser.addOption({"qcam", "load qcamera"});
diff --git a/tools/clip/run.py b/tools/clip/run.py
index 8fa0e8eda..169f33878 100755
--- a/tools/clip/run.py
+++ b/tools/clip/run.py
@@ -268,7 +268,7 @@ def clip(
def main():
- p = ArgumentParser(prog='clip.py', description='clip your openpilot route.', epilog='comma.ai')
+ p = ArgumentParser(prog='clip.py', description='clip your openpilot route.', epilog='konik.ai')
validate_env(p)
route_group = p.add_mutually_exclusive_group(required=True)
route_group.add_argument('route', nargs='?', type=validate_route, help=f'The route (e.g. {DEMO_ROUTE} or {DEMO_ROUTE}/{DEMO_START}/{DEMO_END})')
diff --git a/tools/lib/api.py b/tools/lib/api.py
index c6e2d9891..160a9f566 100644
--- a/tools/lib/api.py
+++ b/tools/lib/api.py
@@ -1,6 +1,6 @@
import os
import requests
-API_HOST = os.getenv('API_HOST', 'https://api.commadotai.com')
+API_HOST = os.getenv('API_HOST', 'https://api.konik.ai')
# TODO: this should be merged into common.api
diff --git a/tools/lib/logreader.py b/tools/lib/logreader.py
index bedafb856..9ec0304ba 100755
--- a/tools/lib/logreader.py
+++ b/tools/lib/logreader.py
@@ -255,10 +255,10 @@ def auto_source(identifier: str, sources: list[Source], default_mode: ReadMode)
def parse_indirect(identifier: str) -> str:
- if "useradmin.comma.ai" in identifier:
+ if "useradmin.konik.ai" in identifier:
query = parse_qs(urlparse(identifier).query)
identifier = query["onebox"][0]
- elif "connect.comma.ai" in identifier:
+ elif "stable.konik.ai" in identifier:
path = urlparse(identifier).path.strip("/").split("/")
path = ['/'.join(path[:2]), *path[2:]] # recombine log id
diff --git a/tools/replay/api.h b/tools/replay/api.h
index dff59c065..1a1fd62be 100644
--- a/tools/replay/api.h
+++ b/tools/replay/api.h
@@ -8,7 +8,7 @@
namespace CommaApi2 {
-const std::string BASE_URL = util::getenv("API_HOST", "https://api.commadotai.com").c_str();
+const std::string BASE_URL = util::getenv("API_HOST", "https://api.konik.ai").c_str();
std::string create_token(bool use_jwt, const json11::Json& payloads = {}, int expiry = 3600);
std::string httpGet(const std::string &url, long *response_code = nullptr);
diff --git a/tools/scripts/fetch_image_from_route.py b/tools/scripts/fetch_image_from_route.py
index 77bf48f94..1e17d4e46 100755
--- a/tools/scripts/fetch_image_from_route.py
+++ b/tools/scripts/fetch_image_from_route.py
@@ -24,7 +24,7 @@ segment = int(sys.argv[2])
frame = int(sys.argv[3])
camera = cameras[sys.argv[4]] if len(sys.argv) > 4 and sys.argv[4] in cameras else "cameras"
-url = f'https://api.commadotai.com/v1/route/{route}/files'
+url = f'https://api.konik.ai/v1/route/{route}/files'
r = requests.get(url, headers={"Authorization": f"JWT {jwt}"}, timeout=10)
assert r.status_code == 200
print("got api response")