Lunar.astro

Tailscale Active Local Wi-Fi

{{ tailscaleIp }}:8000 {{ localIp }}:8000 • 76.7k+ Indexed Records

Stealth Micro-Cursor Engine & Local SQLite Cache Heartbeat: {{ formatTime(status.last_heartbeat) }}

Real-Time Astrological Synchronization

All 76,000+ records are auto-saved to local SQLite storage and incremental files. Sub-5ms queries with server-side full text search. Zero remote writes.

Tailscale Mesh: {{ tailscaleIp || 'Not Active' }}
Wi-Fi Network: {{ localIp }}

Total indexed rows

{{ totalDatabaseRows.toLocaleString() }} 100% saved

Instant local access

Chat messages

{{ (getTableCount('chat_messages') || chatsTotal || 18771).toLocaleString() }}

Full dialog threads

Kundli profiles

{{ (getTableCount('user_details') || usersTotal || 6026).toLocaleString() }}

21 Astrological tables each

Defect scanner

{{ status.total_defects_found || 0 }} logged

In-memory safety linter

Kundli User Gender Demographics ({{ (genderStats.total || usersTotal).toLocaleString() }} profiles)

Filter profiles in the Kundli database by selecting a demographic group below.

Vault Active: Auto-Saving Real-Time Folder: data/backups/vault/

Independent Disaster Recovery & File Vault

All 17 tables are auto-saved in clean master JSON, CSV, and standalone SQLite formats. If any data file is damaged or lost, the vault can restore everything with 1 click.

Total Backed-Up: {{ (vaultStats.total_records || 77823).toLocaleString() }} rows Tables Protected: {{ vaultStats.total_tables || 17 }} Frozen Snapshots: {{ vaultStats.snapshots_count || 1 }}

Change data capture tables (17)

Continuous polling with micro-cursors & local SQLite index

Table Name Snapshot Live Incremental Total Rows Actions
{{ tbl }} {{ info.snapshot ? info.snapshot.toLocaleString() : '0' }} {{ info.incremental > 0 ? '+' + info.incremental.toLocaleString() : '0' }} {{ ((info.snapshot || 0) + (info.incremental || 0)).toLocaleString() }}

Chat Messages Stream

{{ chatsTotal.toLocaleString() }} Total Messages

Full server-side search across all messages with dynamic pagination.

Gender:
Time:
Date:
User Conversation Filter: {{ chatUserName || 'User' }} ({{ chatUserPhone }})
Filtering by Session: {{ chatSessionId }}
{{ msg.role || 'Chat' }} {{ formatDateOnly(msg.created_at) }} {{ formatTimeOnly(msg.created_at) }} ({{ formatRelativeTime(msg.created_at) }})

{{ msg.content || msg.message || '' }}

No chat messages found matching your search.

All {{ chatsTotal.toLocaleString() }} messages loaded.

Kundli Astrological Profiles

{{ usersTotal.toLocaleString() }} Total Users

Showing {{ users.length }} of {{ usersTotal.toLocaleString() }} profiles. Tap any profile to view full Kundli tables.

Region:
Birth Year:
Exact Date:
Age Group:
Timezone:
City:
Phone:
Tables:
Sort By:
Active:
{{ (user.name || 'U').trim().slice(0, 1).toUpperCase() }}

{{ user.name || 'User' }}

Male Female {{ user.gender }}

{{ user.phone }}

{{ formatTime(user.created_at) }}
{{ user.tables_count }} Tables
Birth Date & Time: {{ user.birth_date }} @ {{ user.birth_time }}
Birth Place: {{ user.birth_place }}, {{ user.province }}
Coordinates: {{ user.latitude }}° N, {{ user.longitude }}° E
Timezone Offset: {{ user.timezone ?? '5.5' }} {{ user.timezone === 0 ? '(0 UTC Flaw!)' : '' }}
Tap to inspect all 21 horoscope charts → Inspect
No users matching "{{ userSearch }}".

All {{ usersTotal.toLocaleString() }} Kundli profiles loaded.

Database Table Explorer

Browse, search, and export raw data across all 17 tables.

Showing {{ tableData.length }} of {{ tableTotal.toLocaleString() }}
Click any row, user name, phone, or the Profile button to instantly open full user chats, 21 Kundli charts & telemetry.
# {{ col }} Actions
{{ idx + 1 }}
{{ String(row[col]).trim().slice(0, 1).toUpperCase() }}
{{ row[col] }}
{{ row[col] }}
{{ row[col] }}
Male Female {{ row[col] }} N/A
mobile email {{ row[col] }} null
{{ formatDateClean(row[col]) }}
{{ String(row[col]).slice(0, 8) }}…
{{ row[col] }}
null {...} {{ String(row[col]) }}
No records found in {{ selectedTable }}.

All {{ tableTotal.toLocaleString() }} records loaded.

In-memory defect & flaw scanner

Scans incoming rows for Horosoft DB drops, leaked system prompts, and unicode flaws.

{{ defectsTotal }} Detected
{{ defect.sev }} {{ defect.defect }}
{{ formatTime(defect.ts) }}

{{ defect.msg }}

Table: {{ defect.tbl }} | Primary ID: {{ defect.id }}

All live data passing automated integrity checks.

Zero leaked prompts, Horosoft crashes, or encoding mismatches found in latest batch.

100% Transparency Audit Verified: {{ formatTime(verifyData.verified_at) }}

Full Database & Storage Verification

Every table, physical JSONL file, byte count on disk, and SQLite indexed row count is audited and open for immediate inspection.

Total verified records

{{ (verifyData.total_database_rows || 0).toLocaleString() }}

Across 17 tables

SQLite local cache

{{ (verifyData.sqlite_total_rows || 0).toLocaleString() }}

lunar_local.db ({{ formatBytes(verifyData.sqlite_size_bytes) }})

Baseline master snapshots

{{ (verifyData.baseline_rows || 0).toLocaleString() }}

data/export/tables/

Live streaming delta

+{{ (verifyData.live_incremental_rows || 0).toLocaleString() }}

data/export/incremental/

17-table physical storage & audit

100% Cryptographically Verified Intact
Table Name Baseline Live Delta SQLite Indexed Total Rows Disk Size Verification
{{ t.table }} {{ (t.snapshot_rows || 0).toLocaleString() }} {{ t.incremental_rows > 0 ? '+' + t.incremental_rows.toLocaleString() : '0' }} {{ (t.sqlite_indexed_rows || 0).toLocaleString() }} {{ (t.total_rows || 0).toLocaleString() }} {{ formatBytes(t.bytes_on_disk) }} PASS
Recommended: Tailscale Mesh (Anywhere on 4G/5G)

Scan to Open on Mobile via Tailscale

Works from anywhere in the world on mobile data. Ensure Tailscale is active on your phone, then scan this QR code:

Tailscale Mobile Connect QR

Direct mobile URL (Tailscale)

http://{{ tailscaleIp }}:8000

Alternative: Home Wi-Fi Direct Connect

If your phone is on the same local Wi-Fi router as this PC, open Chrome or Safari to:

Local Wi-Fi QR

http://{{ localIp }}:8000

Install as Full Mobile App (PWA):

  1. Open the URL in Chrome (Android) or Safari (iOS).
  2. Tap the browser menu (⋮) or Share icon (↑).
  3. Select “Add to Home Screen”.
  4. It opens full-screen without address bars, just like a native app.
{{ ((userBundle?.user?.name || selectedUserKundli?.birth_details?.name || 'U').trim().slice(0, 1) || 'U').toUpperCase() }}

{{ userBundle?.user?.name || selectedUserKundli?.birth_details?.name || 'User Profile' }}

Male Female {{ userBundle?.user?.gender || selectedUserKundli?.birth_details?.gender || selectedUserKundli?.gender }} {{ (userBundle?.chats || []).length.toLocaleString() }} Messages Kundli Calculated {{ ((userBundle?.panchang_replies || []).length + (userBundle?.panchang_comments || []).length).toLocaleString() }} Panchang Posts {{ (userBundle?.notifications || []).length.toLocaleString() }} Notifications
Phone: {{ selectedUserPhone || userBundle?.user?.phone || 'N/A' }} {{ userBundle.user.email }} ID: {{ userBundle.user.id.slice(0, 8) }}…

Loading user 360 profile, conversations & astrological charts…

Inspecting from {{ inspectingRecord.table }} {{ formatDateClean(inspectingRecord.row.created_at) }}
{{ inspectingRecord.row.content || inspectingRecord.row.title || inspectingRecord.row.prediction_text || inspectingRecord.row.name || inspectingRecord.row.body || 'Record Details' }}
ID: {{ String(inspectingRecord.row.id).slice(0, 16) }}… Comment ID: {{ String(inspectingRecord.row.comment_id).slice(0, 16) }}… Panchang ID: {{ String(inspectingRecord.row.panchang_id).slice(0, 16) }}…
Showing {{ filteredUserChats.length }} of {{ (userBundle?.chats || []).length }}

No chat messages found for this user.

This user may have created a profile but has not started a chat thread yet.

{{ msg.role === 'user' ? 'USER' : 'ASSISTANT (Lunar AI)' }} {{ formatDateOnly(msg.created_at) }} {{ formatTimeOnly(msg.created_at) }} ({{ formatRelativeTime(msg.created_at) }})
Session: {{ msg.session_id.slice(0, 8) }}…

{{ msg.content || '' }}

No Kundli Astrological Profile Found

This user account exists in the chat database, but birth details have not been submitted to the Horosoft engine.

Birth particulars

Full Name:{{ selectedUserKundli?.birth_details?.name }}
Gender: {{ selectedUserKundli?.birth_details?.gender || selectedUserKundli?.birth_details?.sex || 'N/A' }}
Birth Date:{{ selectedUserKundli?.birth_details?.birthDate }}
Birth Time:{{ selectedUserKundli?.birth_details?.birthTime }}
Timezone Offset:{{ selectedUserKundli?.birth_details?.timezone ?? '5.5' }}

Astrological location

City / Place:{{ selectedUserKundli?.birth_details?.birthPlace }}
State / Province:{{ selectedUserKundli?.birth_details?.cityData?.province || 'N/A' }}
Country:{{ selectedUserKundli?.birth_details?.cityData?.country || 'India' }}
Latitude:{{ selectedUserKundli?.birth_details?.cityData?.latitude }}° N
Longitude:{{ selectedUserKundli?.birth_details?.cityData?.longitude }}° E

Horoscope API engine status

Generated using Horosoft calculation engine. API Version: {{ selectedUserKundli?.horoscope_data?.apiVersion || '2.0.0' }}. Contains all 21 Vedic divisional charts, D1 Rashi, D9 Navamsha, Ashtakavarga, and planetary speeds.

Planetary Positions at Time of Birth
Planet / Graha Sign / Rashi Degrees Speed Nakshatra Pada State
{{ p.planet || p.name }} {{ p.sign || p.rashi }} {{ p.degree || p.norm_degree }}° {{ p.speed || 'Direct' }} {{ p.nakshatra || p.nakshatra_name }} {{ p.pada || p.quarter || 1 }} Retrograde (Vakri) Direct (Marga)

Lucky Factors

{{ formatFieldKey(k) }}: {{ String(v) }}

Avakhada Chakra

{{ formatFieldKey(k) }}: {{ String(v) }}
No Astrological Tables Calculated Yet

This user completed mobile registration, but the Horosoft calculation engine has not generated the 21 charts/dashas for this record.

Select Astrological Table:

{{ currentAstrologicalTable.title || currentAstrologicalTable.name || 'Table Data' }}

Index #{{ selectedAstrologicalTableIndex + 1 }} of {{ kundliTablesList.length }}
{{ h }}
{{ formatCellValue(val) }}
{{ JSON.stringify(currentAstrologicalTable, null, 2) }}
Complete Unmodified JSON Record:
{{ JSON.stringify(selectedUserKundli, null, 2) }}

Chat Sessions ({{ (userBundle?.sessions || []).length }})

{{ s.title || 'Untitled Session' }} {{ formatTime(s.created_at) }}
{{ s.id ? s.id.slice(0, 16) + '…' : '' }} {{ s.message_count || 0 }} messages
No chat sessions recorded.

Registered Devices ({{ (userBundle?.devices || []).length }})

{{ d.device_name || d.device_model || 'Mobile Device' }} {{ d.platform || d.os || 'Mobile' }}
App Version: {{ d.app_version }}
Push: {{ d.push_token.slice(0, 30) }}…
No device records found.

Panchang Comments & Replies ({{ (userBundle?.panchang_comments || []).length + (userBundle?.panchang_replies || []).length }})

Panchang replies

Reply Inspecting record {{ formatDateClean(rep.created_at) }}

{{ rep.content }}

Comment ID: {{ rep.comment_id }} Reply ID: {{ rep.id }}

Panchang comments

Comment Inspecting record {{ formatDateClean(comm.created_at) }}

{{ comm.content }}

Panchang ID: {{ comm.panchang_id }} Comment ID: {{ comm.id }}
No panchang comments or replies posted by this user.

Notifications History ({{ (userBundle?.notifications || []).length }})

{{ notif.kind || 'Notification' }} Inspecting record {{ notif.title || 'Notification' }}
{{ formatDateClean(notif.created_at) }}

{{ notif.body }}

{{ typeof notif.data === 'object' ? JSON.stringify(notif.data) : notif.data }}
No notification records found for this user.

Daily User Insights ({{ (userBundle?.insights || []).length }})

{{ ins.title || (ins.date ? 'Astrological Insight (' + ins.date + ')' : 'Daily Astrological Insight') }} {{ formatDateClean(ins.created_at) }}

{{ ins.transit_insight || ins.insight || ins.content || JSON.stringify(ins, null, 2) }}

Daily Ritual: {{ ins.ritual_text }}
No daily transit insights generated yet for this user.

Daily Zodiac Predictions ({{ (userBundle?.predictions || []).length }})

Zodiac Sign: {{ pred.sign || 'General' }} ({{ pred.date || 'Today' }}) {{ formatDateClean(pred.created_at) }}

{{ pred.prediction_text || pred.content || JSON.stringify(pred, null, 2) }}

No daily zodiac predictions logged for this user.
Complete User 360° Data Bundle:
{{ JSON.stringify(userBundle, null, 2) }}
User: {{ userBundle?.user?.name || selectedUserKundli?.birth_details?.name || 'User' }} ({{ selectedUserPhone || 'N/A' }})

Record Inspection

Table: {{ selectedTable }}

{{ (getRowUserInfo(selectedRowJson).name || 'U').trim().slice(0, 1).toUpperCase() }}

{{ getRowUserInfo(selectedRowJson).name || 'Associated User Profile' }}

Phone: {{ getRowUserInfo(selectedRowJson).phone || 'N/A' }}

{{ JSON.stringify(selectedRowJson, null, 2) }}