diff --git a/app/AgentScheduler.php b/app/AgentScheduler.php
index 8ec0514d0a71d6187570aa558fea02ba010ed5a6..47f93a8ab8c6246a3b813bd29609bcaf60c19286 100644
--- a/app/AgentScheduler.php
+++ b/app/AgentScheduler.php
@@ -118,7 +118,7 @@ class AgentScheduler
         }
         
         foreach ($this->triggers[$trigger_label] as $agent) {
-            RunAgent::dispatch($agent, $record->server);
+            RunAgent::dispatch($agent, $record);
         }
     }
 }
diff --git a/app/Http/Controllers/RecordController.php b/app/Http/Controllers/RecordController.php
new file mode 100644
index 0000000000000000000000000000000000000000..0ec024abdf13b3bdc7e36499ac71a291069b14ef
--- /dev/null
+++ b/app/Http/Controllers/RecordController.php
@@ -0,0 +1,13 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use App\Record;
+
+class RecordController extends Controller
+{
+    public function show(Record $record)
+    {
+        return view("record.show")->with(["record" => $record]);
+    }
+}
diff --git a/app/Jobs/RunAgent.php b/app/Jobs/RunAgent.php
index 1d32e8db325b79d51ce6d660314028f66646cfd5..b2f3fb61b93048265e13ce85f574b36ca8255b52 100644
--- a/app/Jobs/RunAgent.php
+++ b/app/Jobs/RunAgent.php
@@ -3,7 +3,7 @@
 namespace App\Jobs;
 
 use App\Sensor;
-use App\Server;
+use App\Record;
 
 use Illuminate\Bus\Queueable;
 use Illuminate\Contracts\Queue\ShouldQueue;
@@ -24,19 +24,19 @@ class RunAgent implements ShouldQueue
     
     /**
      *
-     * @var Server
+     * @var Record
      */
-    public $server;
+    public $record;
 
     /**
      * Create a new job instance.
      *
      * @return void
      */
-    public function __construct(Sensor $agent, Server $server)
+    public function __construct(Sensor $agent, Record $record)
     {
         $this->agent = $agent;
-        $this->server = $server;
+        $this->record = $record;
     }
 
     /**
@@ -47,12 +47,16 @@ class RunAgent implements ShouldQueue
     public function handle()
     {
         $trigger_label = $this->agent->config()->trigger_label;
-        $records = $this->server->lastRecords($trigger_label);
+        $record = $this->record;
+        $server = $this->record->server;
         
-        $report = $this->agent->analyze($records, $this->server->info());
+        $records = $server->lastRecords($trigger_label);
+        
+        $report = $this->agent->analyze($records, $server->info());
         $report->time = time();
-        $report->server_id = $this->server->id;
+        $report->server_id = $server->id;
         $report->label = $this->agent->config()->label;
+        $report->record_id = $record->id;
         $report->save();
     }
 }
diff --git a/app/Record.php b/app/Record.php
index d12fac44a6763efc52c2d4cada1b8a686a4877b4..d3713c7b4b4aa55a215407190abc7f87d77ef7d9 100644
--- a/app/Record.php
+++ b/app/Record.php
@@ -2,6 +2,7 @@
 
 namespace App;
 
+use Carbon\Carbon;
 use Illuminate\Database\Eloquent\Model;
 
 /**
@@ -30,4 +31,9 @@ class Record extends Model
         
         return false;
     }
+    
+    public function time() : Carbon
+    {
+        return Carbon::createFromTimestamp($this->time);
+    }
 }
diff --git a/app/Report.php b/app/Report.php
index 030280ae508044de30c807b36025e0cc3e28de4c..d17cdf54bcb3cbb5d5fab737f4209b29f6cc0eb8 100644
--- a/app/Report.php
+++ b/app/Report.php
@@ -33,6 +33,11 @@ class Report extends Model implements HasStatus
         parent::__construct($attributes);
     }
     
+    public function record()
+    {
+        return $this->belongsTo(Record::class);
+    }
+    
     public function setTitle(string $title) : Report
     {
         $this->title = $title;
diff --git a/app/ServerInfo.php b/app/ServerInfo.php
index 266453466c38f10196874316df2dda466df2cfe8..79db2e8287cdfc98671a138d3823810aa5806d9a 100644
--- a/app/ServerInfo.php
+++ b/app/ServerInfo.php
@@ -194,7 +194,7 @@ class ServerInfo
     {
         $record = $this->server->lastRecord("version");
         if (is_null($record)) {
-            return new Carbon();
+            return Carbon::createFromTimestamp(0);
         }
         
         return Carbon::createFromTimestamp($record->time);
diff --git a/database/migrations/2024_02_18_144251_reports_add_record_id.php b/database/migrations/2024_02_18_144251_reports_add_record_id.php
new file mode 100644
index 0000000000000000000000000000000000000000..6772ff388d398d0b51638d205cef47da80420dcb
--- /dev/null
+++ b/database/migrations/2024_02_18_144251_reports_add_record_id.php
@@ -0,0 +1,35 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class ReportsAddRecordId extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('reports', function (Blueprint $table) {
+            $table->unsignedBigInteger("record_id")->nullable();
+            
+            $table->foreign('record_id')->references('id')->on('records')
+                    ->onDelete("cascade");
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('reports', function (Blueprint $table) {
+            //
+        });
+    }
+}
diff --git a/resources/views/record/show.blade.php b/resources/views/record/show.blade.php
new file mode 100644
index 0000000000000000000000000000000000000000..2a3c8ed470ce1262595656f9b83d43394298150f
--- /dev/null
+++ b/resources/views/record/show.blade.php
@@ -0,0 +1,25 @@
+@extends('layouts.app')
+
+@section('content')
+<div class="container">
+    
+    <p>
+        <span class="badge badge-secondary">#{{ $record->id }}</span>
+        <span class="badge badge-primary">{{ $record->label }}</span>
+        <a class="badge badge-primary"
+           href="{{ action("ServerController@show", ["server" => $record->server]) }}">
+            <i class="fas fa-desktop"></i> {{ $record->server->name }}
+        </a>
+        <span class="badge badge-secondary">
+            <i class="far fa-clock"></i> {{ $record->time() }}
+        </span>
+    </p>
+    
+    <div class="card">
+        <div class="card-body">
+            <pre><code class="small">{{ $record->data }}</code></pre>
+        </div>
+    </div>
+
+</div>
+@endsection
diff --git a/resources/views/server/show.blade.php b/resources/views/server/show.blade.php
index 1003b405304c3c6d4612cb016f530617fc9f830e..1caadef4799d97024526db24e6c5743961472f3b 100644
--- a/resources/views/server/show.blade.php
+++ b/resources/views/server/show.blade.php
@@ -59,6 +59,10 @@ window.monitorServerToken = "{{ $server->read_token }}";
             {{ $report->title() }}
 
             <div class="float-right">
+                <a class="badge badge-secondary"
+                   href="{{ action("RecordController@show", ["record" => $report->record]) }}">
+                    <i class="fas fa-search"></i>
+                </a>
                 {!! $report->status()->badge() !!}
             </div>
         </div>
diff --git a/routes/web.php b/routes/web.php
index f1b5f2abd3932ddb0f42dd26e69bd1e7d2650615..a8fcb16947e637dbecf173a5d4fb6200b8af1e0f 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -55,3 +55,4 @@ Route::get(
 Route::resource('app/organizations', 'OrganizationController');
 Route::resource("app/organizations.user", "OrganizationUserController")->only(["create", "store", "destroy"]);
 Route::resource('app/servers', 'ServerController')->except(["index"]);
+Route::get("app/records/{record}", "RecordController@show");