Ethos is a hackathon prototype for campus security teams. It ties together multiple data sources — face images, card access, WiFi logs, and activity streams — to help operators quickly find people or devices and investigate incidents.
Key capabilities:
- Entity resolution across systems (students, staff, devices, assets)
- Real-time security alerts (missing assets, anomalous behavior, unauthorized access)
- Activity timelines and simple predictive monitoring to help SOC teams prioritize work
This README also documents a recent accidental commit of sensitive files and the mitigation steps taken (see "Security note").
The frontend provides several main views:
- Dashboard — quick stats and overall health of security alerts.
- Entity Resolution — search by name, ID, email, card number or device hash and see matched profiles with cross-source identifiers and face thumbnails.
- Activity Timeline — timeline of events for entities.
- Predictive Monitoring — simple forecasting/alerts for anomalous patterns.
- Security Alerts — searchable, filterable list of alerts with investigation tools.
- Security Operations Center (SOC) teams and campus security officers
- IT and facilities staff responsible for assets and network security
- Investigators who need to stitch together cross-source evidence quickly
- Open the Dashboard to see active alerts and overall health.
- Click a Security Alert to view details and evidence.
- Use Entity Resolution (single page) to search by name, ID, email, card number or device hash.
- From the search results pick the single entity you want to investigate — the app shows a compact list and then a detailed view for the selected entity.
Why there are two Entity Resolution screenshots The Entity Resolution area is a single page in the app. The README shows two images from that page intentionally:
- the first image shows the search results (overview),
- the second image shows the same page after the operator selects one entity (detail).
This demonstrates the two main states of the same page (list → selected detail) rather than two separate pages.
Below are screenshots of the running frontend UI (copied from frontend/images/ into docs/images/):
- Install dependencies (root has a
package.jsonthat includes both backend and frontend scripts):
# install at repo root
npm install
# install backend deps
cd backend; npm install; cd ..
# install frontend deps
cd frontend; npm install; cd ..- Start backend (defaults to PORT from .env or 3000):
cd backend
node app.js- Start frontend (Vite dev server):
cd frontend
npm run devThe frontend expects the backend API at http://localhost:3000 by default.





