diff --git a/README.md b/README.md
index b497aee43..91ff9d445 100644
--- a/README.md
+++ b/README.md
@@ -24,11 +24,15 @@ npm run dev
This should start the console application on [http://localhost:3000](http://localhost:3000).
-_Note:_ The `server.js` file uses [@fastify/vite](https://fastify-vite.dev/) to build and serve the React frontend contained in the [`/client`](./client) folder. You can find the configuration in the [`vite.config.js`](./vite.config.js) file.
+This application is a minimal template that uses [express](https://expressjs.com/) to serve the React frontend contained in the [`/client`](./client) folder. The server is configured to use [vite](https://vitejs.dev/) to build the React frontend.
+
+This application shows how to send and receive Realtime API events over the WebRTC data channel and configure client-side function calling. You can also view the JSON payloads for client and server events using the logging panel in the UI.
+
+For a more comprehensive example, see the [OpenAI Realtime Agents](https://github.com/openai/openai-realtime-agents) demo built with Next.js, using an agentic architecture inspired by [OpenAI Swarm](https://github.com/openai/swarm).
## Previous WebSockets version
-The previous version of this application that used WebSockets on the client (not recommended in client-side browsers) [can be found here](https://github.com/openai/openai-realtime-console/tree/websockets).
+The previous version of this application that used WebSockets on the client (not recommended in browsers) [can be found here](https://github.com/openai/openai-realtime-console/tree/websockets).
## License
diff --git a/client/entry-client.jsx b/client/entry-client.jsx
new file mode 100644
index 000000000..41b5b9892
--- /dev/null
+++ b/client/entry-client.jsx
@@ -0,0 +1,11 @@
+import { StrictMode } from "react";
+import ReactDOM from "react-dom/client";
+import App from "./components/App";
+import "./base.css";
+
+ReactDOM.hydrateRoot(
+ document.getElementById("root"),
+