diff --git a/app/Http/Controllers/Api/ApplicationsController.php b/app/Http/Controllers/Api/ApplicationsController.php
index 9b9de640c..b9c854ea1 100644
--- a/app/Http/Controllers/Api/ApplicationsController.php
+++ b/app/Http/Controllers/Api/ApplicationsController.php
@@ -2532,6 +2532,9 @@ class ApplicationsController extends Controller
                 if ($env->is_shown_once != $request->is_shown_once) {
                     $env->is_shown_once = $request->is_shown_once;
                 }
+                if ($request->has('is_buildtime_only') && $env->is_buildtime_only != $request->is_buildtime_only) {
+                    $env->is_buildtime_only = $request->is_buildtime_only;
+                }
                 $env->save();
 
                 return response()->json($this->removeSensitiveData($env))->setStatusCode(201);
@@ -2556,6 +2559,9 @@ class ApplicationsController extends Controller
                 if ($env->is_shown_once != $request->is_shown_once) {
                     $env->is_shown_once = $request->is_shown_once;
                 }
+                if ($request->has('is_buildtime_only') && $env->is_buildtime_only != $request->is_buildtime_only) {
+                    $env->is_buildtime_only = $request->is_buildtime_only;
+                }
                 $env->save();
 
                 return response()->json($this->removeSensitiveData($env))->setStatusCode(201);
@@ -2717,6 +2723,9 @@ class ApplicationsController extends Controller
                     if ($env->is_shown_once != $item->get('is_shown_once')) {
                         $env->is_shown_once = $item->get('is_shown_once');
                     }
+                    if ($item->has('is_buildtime_only') && $env->is_buildtime_only != $item->get('is_buildtime_only')) {
+                        $env->is_buildtime_only = $item->get('is_buildtime_only');
+                    }
                     $env->save();
                 } else {
                     $env = $application->environment_variables()->create([
@@ -2726,6 +2735,7 @@ class ApplicationsController extends Controller
                         'is_literal' => $is_literal,
                         'is_multiline' => $is_multi_line,
                         'is_shown_once' => $is_shown_once,
+                        'is_buildtime_only' => $item->get('is_buildtime_only', false),
                         'resourceable_type' => get_class($application),
                         'resourceable_id' => $application->id,
                     ]);
@@ -2743,6 +2753,9 @@ class ApplicationsController extends Controller
                     if ($env->is_shown_once != $item->get('is_shown_once')) {
                         $env->is_shown_once = $item->get('is_shown_once');
                     }
+                    if ($item->has('is_buildtime_only') && $env->is_buildtime_only != $item->get('is_buildtime_only')) {
+                        $env->is_buildtime_only = $item->get('is_buildtime_only');
+                    }
                     $env->save();
                 } else {
                     $env = $application->environment_variables()->create([
@@ -2752,6 +2765,7 @@ class ApplicationsController extends Controller
                         'is_literal' => $is_literal,
                         'is_multiline' => $is_multi_line,
                         'is_shown_once' => $is_shown_once,
+                        'is_buildtime_only' => $item->get('is_buildtime_only', false),
                         'resourceable_type' => get_class($application),
                         'resourceable_id' => $application->id,
                     ]);
@@ -2890,6 +2904,7 @@ class ApplicationsController extends Controller
                     'is_literal' => $request->is_literal ?? false,
                     'is_multiline' => $request->is_multiline ?? false,
                     'is_shown_once' => $request->is_shown_once ?? false,
+                    'is_buildtime_only' => $request->is_buildtime_only ?? false,
                     'resourceable_type' => get_class($application),
                     'resourceable_id' => $application->id,
                 ]);
@@ -2912,6 +2927,7 @@ class ApplicationsController extends Controller
                     'is_literal' => $request->is_literal ?? false,
                     'is_multiline' => $request->is_multiline ?? false,
                     'is_shown_once' => $request->is_shown_once ?? false,
+                    'is_buildtime_only' => $request->is_buildtime_only ?? false,
                     'resourceable_type' => get_class($application),
                     'resourceable_id' => $application->id,
                 ]);
diff --git a/app/Jobs/ApplicationDeploymentJob.php b/app/Jobs/ApplicationDeploymentJob.php
index 8807f0f97..81628a629 100644
--- a/app/Jobs/ApplicationDeploymentJob.php
+++ b/app/Jobs/ApplicationDeploymentJob.php
@@ -911,7 +911,11 @@ class ApplicationDeploymentJob implements ShouldBeEncrypted, ShouldQueue
         });
         if ($this->pull_request_id === 0) {
             $this->env_filename = '.env';
-            foreach ($sorted_environment_variables as $env) {
+            // Filter out buildtime-only variables from runtime environment
+            $runtime_environment_variables = $sorted_environment_variables->filter(function ($env) {
+                return ! $env->is_buildtime_only;
+            });
+            foreach ($runtime_environment_variables as $env) {
                 $envs->push($env->key.'='.$env->real_value);
             }
             // Add PORT if not exists, use the first port as default
@@ -955,7 +959,11 @@ class ApplicationDeploymentJob implements ShouldBeEncrypted, ShouldQueue
             }
         } else {
             $this->env_filename = '.env';
-            foreach ($sorted_environment_variables_preview as $env) {
+            // Filter out buildtime-only variables from runtime environment for preview
+            $runtime_environment_variables_preview = $sorted_environment_variables_preview->filter(function ($env) {
+                return ! $env->is_buildtime_only;
+            });
+            foreach ($runtime_environment_variables_preview as $env) {
                 $envs->push($env->key.'='.$env->real_value);
             }
             // Add PORT if not exists, use the first port as default
diff --git a/app/Livewire/Project/Shared/EnvironmentVariable/Add.php b/app/Livewire/Project/Shared/EnvironmentVariable/Add.php
index a2d783232..9d5a5a39f 100644
--- a/app/Livewire/Project/Shared/EnvironmentVariable/Add.php
+++ b/app/Livewire/Project/Shared/EnvironmentVariable/Add.php
@@ -23,6 +23,8 @@ class Add extends Component
 
     public bool $is_literal = false;
 
+    public bool $is_buildtime_only = false;
+
     protected $listeners = ['clearAddEnv' => 'clear'];
 
     protected $rules = [
@@ -30,6 +32,7 @@ class Add extends Component
         'value' => 'nullable',
         'is_multiline' => 'required|boolean',
         'is_literal' => 'required|boolean',
+        'is_buildtime_only' => 'required|boolean',
     ];
 
     protected $validationAttributes = [
@@ -37,6 +40,7 @@ class Add extends Component
         'value' => 'value',
         'is_multiline' => 'multiline',
         'is_literal' => 'literal',
+        'is_buildtime_only' => 'buildtime only',
     ];
 
     public function mount()
@@ -52,6 +56,7 @@ class Add extends Component
             'value' => $this->value,
             'is_multiline' => $this->is_multiline,
             'is_literal' => $this->is_literal,
+            'is_buildtime_only' => $this->is_buildtime_only,
             'is_preview' => $this->is_preview,
         ]);
         $this->clear();
@@ -63,5 +68,6 @@ class Add extends Component
         $this->value = '';
         $this->is_multiline = false;
         $this->is_literal = false;
+        $this->is_buildtime_only = false;
     }
 }
diff --git a/app/Livewire/Project/Shared/EnvironmentVariable/All.php b/app/Livewire/Project/Shared/EnvironmentVariable/All.php
index 884441ec2..92c1d16f9 100644
--- a/app/Livewire/Project/Shared/EnvironmentVariable/All.php
+++ b/app/Livewire/Project/Shared/EnvironmentVariable/All.php
@@ -214,6 +214,7 @@ class All extends Component
         $environment->value = $data['value'];
         $environment->is_multiline = $data['is_multiline'] ?? false;
         $environment->is_literal = $data['is_literal'] ?? false;
+        $environment->is_buildtime_only = $data['is_buildtime_only'] ?? false;
         $environment->is_preview = $data['is_preview'] ?? false;
         $environment->resourceable_id = $this->resource->id;
         $environment->resourceable_type = $this->resource->getMorphClass();
diff --git a/app/Livewire/Project/Shared/EnvironmentVariable/Show.php b/app/Livewire/Project/Shared/EnvironmentVariable/Show.php
index 14b532bf8..ab70b70f4 100644
--- a/app/Livewire/Project/Shared/EnvironmentVariable/Show.php
+++ b/app/Livewire/Project/Shared/EnvironmentVariable/Show.php
@@ -38,6 +38,8 @@ class Show extends Component
 
     public bool $is_shown_once = false;
 
+    public bool $is_buildtime_only = false;
+
     public bool $is_required = false;
 
     public bool $is_really_required = false;
@@ -56,6 +58,7 @@ class Show extends Component
         'is_multiline' => 'required|boolean',
         'is_literal' => 'required|boolean',
         'is_shown_once' => 'required|boolean',
+        'is_buildtime_only' => 'required|boolean',
         'real_value' => 'nullable',
         'is_required' => 'required|boolean',
     ];
@@ -99,6 +102,7 @@ class Show extends Component
             } else {
                 $this->validate();
                 $this->env->is_required = $this->is_required;
+                $this->env->is_buildtime_only = $this->is_buildtime_only;
                 $this->env->is_shared = $this->is_shared;
             }
             $this->env->key = $this->key;
@@ -113,6 +117,7 @@ class Show extends Component
             $this->is_multiline = $this->env->is_multiline;
             $this->is_literal = $this->env->is_literal;
             $this->is_shown_once = $this->env->is_shown_once;
+            $this->is_buildtime_only = $this->env->is_buildtime_only ?? false;
             $this->is_required = $this->env->is_required ?? false;
             $this->is_really_required = $this->env->is_really_required ?? false;
             $this->is_shared = $this->env->is_shared ?? false;
diff --git a/app/Models/EnvironmentVariable.php b/app/Models/EnvironmentVariable.php
index 0afa703c2..85fcdcecb 100644
--- a/app/Models/EnvironmentVariable.php
+++ b/app/Models/EnvironmentVariable.php
@@ -17,6 +17,7 @@ use OpenApi\Attributes as OA;
         'is_literal' => ['type' => 'boolean'],
         'is_multiline' => ['type' => 'boolean'],
         'is_preview' => ['type' => 'boolean'],
+        'is_buildtime_only' => ['type' => 'boolean'],
         'is_shared' => ['type' => 'boolean'],
         'is_shown_once' => ['type' => 'boolean'],
         'key' => ['type' => 'string'],
@@ -36,6 +37,7 @@ class EnvironmentVariable extends BaseModel
         'value' => 'encrypted',
         'is_multiline' => 'boolean',
         'is_preview' => 'boolean',
+        'is_buildtime_only' => 'boolean',
         'version' => 'string',
         'resourceable_type' => 'string',
         'resourceable_id' => 'integer',
diff --git a/database/migrations/2025_09_11_150344_add_is_buildtime_only_to_environment_variables_table.php b/database/migrations/2025_09_11_150344_add_is_buildtime_only_to_environment_variables_table.php
new file mode 100644
index 000000000..d95f351d5
--- /dev/null
+++ b/database/migrations/2025_09_11_150344_add_is_buildtime_only_to_environment_variables_table.php
@@ -0,0 +1,28 @@
+boolean('is_buildtime_only')->default(false)->after('is_preview');
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     */
+    public function down(): void
+    {
+        Schema::table('environment_variables', function (Blueprint $table) {
+            $table->dropColumn('is_buildtime_only');
+        });
+    }
+};
diff --git a/resources/views/livewire/project/shared/environment-variable/add.blade.php b/resources/views/livewire/project/shared/environment-variable/add.blade.php
index 8e0993d43..5af9e6318 100644
--- a/resources/views/livewire/project/shared/environment-variable/add.blade.php
+++ b/resources/views/livewire/project/shared/environment-variable/add.blade.php
@@ -5,6 +5,9 @@
         x-bind:label="$wire.is_multiline === false && 'Value'" required />