Small Grant: PrivRec - A Privacy-Preserving Screen & Camera Recorder

Project Name: PrivRec - A Privacy-Preserving Screen & Camera Recorder

Name of the organization or individual submitting the proposal: Seifeddine Seghaier

Describe your project.

PrivRec is a privacy-focused, browser-based screen and camera recorder built on the Sia network. Users record their screen, camera, or both directly in the browser and instantly get a shareable link. Recipients open the link and watch the video in a browser player – no download required, no account needed to watch.

All recording, encryption, upload, and playback happen entirely in the browser using the Sia JS SDK. No video data ever passes through a server.


How does the projected outcome serve the Foundation’s mission of user-owned data? What problem does your project solve?

Existing screen and camera recording tools are entirely custodial. Every recording is stored on company servers in plaintext. The provider can watch, analyze, sell, or lose your video at any time. For journalists recording sensitive interviews, lawyers capturing privileged communications, developers sharing internal demos, or whistleblowers documenting evidence, this is an unacceptable risk.

PrivRec solves this by making it architecturally impossible for any third party to watch a recording. The Sia JS SDK encrypts all data client-side before it leaves the browser and uploads directly to Sia. The user holds the only decryption key. The video lives on Sia’s decentralized network. This is genuine user-owned data: not a privacy policy promise, but a cryptographic guarantee.

Are you a resident of any jurisdiction on that list? No

Will your payment bank account be located in any jurisdiction on that list? No


Grant Specifics

Amount of money requested and justification with a reasonable breakdown of expenses:

Item Detail Monthly Total
Developer 3 months × 67 hrs × $30/hr $2,000/month $6,000
Infrastructure & Hosting Live public instance $150/month $450
Total $2,150/month $6,450

Grant payments received monthly: $2,150/month over 3 months.


What is the high-level architecture overview for the grant? What security best practices are you following?

PrivRec is a fully client-side static React SPA with no server components. All recording, encryption, uploads, share URL generation, playback, and deletion are handled entirely by the Sia JS SDK running as WebAssembly in the browser. No cryptographic key material is ever sent to any remote server. All indexer usage flows through the Sia JS SDK.

Users connect their own Sia account on first visit by providing their indexer URL and completing the one-time approval flow. A BIP-39 recovery phrase is used to derive their App Key entirely in the browser. The recovery phrase is never stored. Returning users reconnect instantly via their stored App Key on the same browser, or by re-entering their recovery phrase on a new device – the Sia JS SDK re-derives the exact same App Key from it, restoring full account access.

Recorded videos are encrypted and uploaded directly to Sia from the browser. Share URLs are time-limited via the Sia JS SDK’s native shareObject() expiry parameter. Expiry duration is also stored in encrypted object metadata so the dashboard can display the expiry date for each recording. After expiry the share URL becomes invalid and the recording can no longer be accessed by anyone. Users can regenerate a new share link for any existing recording at any time from their history dashboard by calling shareObject() again with a new expiry date. Recipients stream the video directly from Sia into a browser video player – no account required to watch. Users also manage and delete their own recordings manually from the dashboard.

Security practices: no seeds stored in the browser, no key material sent to any remote server, all Sia account operations handled via the Sia JS SDK, share URLs encoded in URL fragments which browsers never transmit in HTTP requests.


What are the goals of this small grant? Please provide a general timeline for completion.

Month 1

  • Onboarding flow with indexer and user recovery phrase
  • Login flow
  • Camera only and screen only recording modes
  • Camera and microphone device selection
  • Upload recording to Sia via Sia JS SDK – user selects expiry duration before upload (1 hour, 24 hours, 7 days, 30 days, or never) stored in encrypted object metadata
  • Generate share link via Sia JS SDK sharing API
  • Recipient playback page – streams recording directly from Sia into a browser video player, no account required

Month 2

  • Recording history dashboard with share buttons
  • Picture-in-picture recording mode (camera and screen combined)
  • Ability to regenerate a new share link for any existing recording
  • Manual deletion of recordings
  • Basic account stats from Sia JS SDK account API
  • User testing and feedback

Month 3

  • React and Tailwind recording interface with device selector, mode toggle, real-time timer, and preview
  • Share result page with link and expiry information
  • Settings page for indexer configuration
  • Self-hosting documentation
  • Final security review and public release

Who is the target user for your project?

Both the average user and the privacy-focused user who wants a simple, trustless alternative to custodial screen recording tools. This should be usable for both mainstream and professional use cases – from developers sharing internal screen recordings to journalists and researchers who need a credible zero-knowledge guarantee.


What are your plans for this project following the grant?

Once the grant is wrapped up, the main focus will be listening to user feedback and improving the experience. Planned future releases include a desktop application for Windows and macOS enabling system audio capture and native recording.


Potential risks that will affect the outcome of the project:

  • Browser recording compatibility – MediaRecorder API codec support varies across browsers. Mitigated by detecting supported codecs at runtime and falling back to WebM with VP8 and Opus.
  • Large video file sizes – Mitigated by using the Sia JS SDK’s streaming upload and download APIs throughout.
  • Video playback buffering – Streaming large encrypted videos from Sia may introduce buffering. Mitigated by using the Sia JS SDK’s streaming download API with a progressive browser video player.

Development Information

Contact Information

Hi @Seghaier-Seifeddine - thank you for this proposal. We’ve reached capacity for next week’s Grants Committee meeting, so this proposal will be slotted for review during the next meeting on May 26th.

Thank you for your patience.

1 Like