diff --git a/apps/canvas/back/src/index.ts b/apps/canvas/back/src/index.ts
index b6a7098..1fd9b37 100644
--- a/apps/canvas/back/src/index.ts
+++ b/apps/canvas/back/src/index.ts
@@ -809,6 +809,48 @@
 	}
 };
 
+// eslint-disable-next-line @typescript-eslint/no-unused-vars
+const internalEnvSchema = z.object({
+	githubToken: z.string().optional(),
+	networks: z.array(
+		z.object({
+			name: z.string(),
+			domain: z.string(),
+			hasAuth: z.boolean(),
+		}),
+	),
+});
+
+type InternalEnv = z.infer<typeof internalEnvSchema>;
+
+const handleInternalEnv: express.Handler = async (req, resp) => {
+	try {
+		console.log("getting internal env");
+		const project = await db.project.findUnique({
+			where: {
+				id: Number(req.params["projectId"]),
+				userId: resp.locals.userId,
+			},
+			select: {
+				githubToken: true,
+			},
+		});
+		const networks = getNetworks(resp.locals.username);
+		const env: InternalEnv = {
+			networks,
+			githubToken: project?.githubToken ?? undefined,
+		};
+		resp.status(200);
+		resp.write(JSON.stringify(env));
+	} catch (error) {
+		console.error("Error getting env:", error);
+		resp.status(500);
+		resp.write(JSON.stringify({ error: "Internal server error" }));
+	} finally {
+		resp.end();
+	}
+};
+
 const handleServiceLogs: express.Handler = async (req, resp) => {
 	const projectId = Number(req.params["projectId"]);
 	const service = req.params["service"];
@@ -1263,6 +1305,7 @@
 	internalApi.get("/api/project/:projectId/config", handleConfigGet);
 	internalApi.post("/api/project/:projectId/saved", handleSave);
 	internalApi.post("/api/project/:projectId/deploy", handleDeploy);
+	internalApi.get("/api/project/:projectId/env", handleInternalEnv);
 	internalApi.post("/api/validate-config", handleValidateConfig);
 
 	app.listen(env.DODO_PORT_WEB, () => {
