Inspiration

I was watching students in India use their phones to document protests and was struck by the power of an ordinary camera. When institutions, news coverage, or online conversations fail to reflect what is happening on the ground, a recording can preserve a firsthand account.

But people often need to record someone who has more authority or power than they do. In those moments, the only copy of the evidence may be sitting on a phone that can be taken, searched, damaged, or erased.

I built Vigil to explore a simple question: how can a phone help someone record an important encounter quickly, while making a completed recording harder to lose?

What it does

Vigil is an open-source iOS safety camera designed for stressful situations.

  • Open the app and start recording with one large control.
  • Start recording through an iPhone Action Button shortcut.
  • Choose the rear camera, front camera, or both simultaneously in picture-in-picture on compatible iPhones.
  • Use Screen Curtain to hide the live preview and lower display brightness while recording continues. Vigil does not hide the recording timer, stop control, or Apple's camera and microphone indicators.
  • Save every completed recording to the always-on Vigil Vault.
  • Require Face ID or the iPhone passcode before the Vault opens.
  • Optionally create additional copies in Photos and in a visible Vigil folder inside the user's own Google Drive.
  • Finalize the active clip when the app is interrupted or sent to the background, then resume into a new protected clip when recording becomes available again.
  • Review capture context including a UTC timestamp and short recording ID.
  • Share either the untouched original or a temporary Vigil-stamped copy.
  • Use an SOS control to hand off to the iPhone's emergency-call confirmation.

Vigil has no advertising, analytics, tracking, developer-operated server, or separate Vigil account.

The current MVP backs up recordings after a clip has been finalized. It does not yet stream video to the cloud while recording, so it should not be treated as tamper-proof or as the only way to preserve evidence.

How I built it

I am a designer and founder, but still a beginner iOS developer. I used Codex with GPT-5.6 as a technical partner throughout Build Week, while I made the product, design, privacy, and safety decisions.

The app is written in Swift and SwiftUI. It uses AVFoundation and Apple's MultiCam APIs for camera capture, LocalAuthentication for Vault access, iOS file protection for local recordings, Photos for optional Camera Roll copies, Google Sign-In and the Google Drive API for user-controlled cloud backup, and App Intents for the Action Button shortcut.

Codex helped me:

  • Turn the product idea into an incremental development plan.
  • Build and refine the SwiftUI interface.
  • Implement the single- and dual-camera capture pipeline.
  • Diagnose physical-device crashes when switching camera modes.
  • Fix camera startup and recovery after locks, interruptions, and phone calls.
  • Implement protected local storage, Face ID access, metadata, playback, and sharing.
  • Diagnose Photos permission and saving failures.
  • Integrate Google OAuth and Google Drive uploads while keeping sign-in separate from the backup toggle.
  • Build, install, and repeatedly verify the app on a physical iPhone.
  • Document the threat model and limitations instead of overstating what the prototype protects.

Challenges

The most difficult work involved iOS camera state. Switching between single-camera and MultiCam sessions initially caused crashes and frozen layouts. Camera ownership could also become unstable after unlocking the phone, returning from the background, or ending a call.

Another challenge was designing the interface for a person who may be under stress. We repeatedly removed navigation, duplicated status messages, and unnecessary controls until the main screen communicated only what mattered: whether Vigil was ready, recording, or saving.

Google Drive also required careful separation between account connection and backup preference. Turning backup off should pause uploads without forcing the person to sign in again later.

What I learned

I learned that a safety product has to be honest about its failure modes. A reassuring interface is not enough: the app needs understandable storage states, conservative claims, and documentation explaining what happens if recording is interrupted, the network disappears, or the phone is taken before an upload completes.

I also learned how far a designer with limited native-development experience can go when an agent can explain unfamiliar concepts, inspect real crash logs, make targeted changes, and verify each step on the actual device.

What's next

  • Encrypt and upload independently playable segments while recording.
  • Add private iCloud backup.
  • Add durable background retry and upload history.
  • Create cryptographic integrity manifests and an exportable chain-of-custody record.
  • Expand accessibility, localization, automated tests, and physical-device coverage.

The source, setup instructions, privacy model, security limitations, and roadmap are public so the project's claims can be inspected rather than taken on trust.

Try the beta

Optional iPhone beta: Install Vigil through TestFlight. The public link will begin accepting testers after Apple approves the first external beta build.

Built With

Share this project:

Updates