selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

Aural logo

Self-host Aural

v0.3.1

AI interviews across voice, chat and video

BetaOpen SourceMIT
Updated2 weeks ago
LanguageTypescript
Setup difficultyAdvanced
MobileNative app
Stars
221
Ports
3000 (Next.js web application), 8766 (Primary voice relay (Volcengine Doubao)), 8767 (Backup voice relay (Azure OpenAI Realtime))
Install with Docker
Aural platform showing interview design, AI report, and video interview panelsTranscript view of AI interviewer conversation with participantMulti-mode interview channels: chat, voice, and videoAssessment scores analytics with insights and themesMobile dashboard showing interview overview and session statsInterview question editor on mobile with assessment criteriaSession report on mobile with per-question scores and feedbackWhiteboard interview on mobile with drawing tools and voice recording

What is Aural?

Aural is an open-source platform for running AI-led interviews at scale. Teams outline their goals in natural language, and the system assembles a complete interview with questions, scoring guides, and configuration. Candidates join through a shared link and answer via text, voice, or video. The AI interviewer modifies its follow-up questions on the fly, varying depth and tone. Supported formats include open-ended answers, multiple choice, live coding in a Monaco editor, and whiteboard sketching with Excalidraw. Each finished session yields a report with per-question scores, strengths, and improvement notes. Anti-cheating measures watch for tab changes, block paste actions, and detect extra monitors. Work can be organized into organizations and projects with role-based permissions. A practice area lets candidates rehearse with live AI feedback. A REST API documented with OpenAPI allows programmatic control. The tech stack centers on Next.js 16, TypeScript, Supabase for PostgreSQL and authentication, tRPC, and Tailwind CSS. LLM options cover OpenAI, Gemini, Kimi, MiniMax, and any OpenAI-compatible endpoint. Voice sessions use WebSocket relays backed by Volcengine's Doubao service or Azure's OpenAI Realtime API. Self-hosting requires Node.js 20.19 or newer, a Supabase instance, and at least one LLM key. The project is MIT-licensed and receives regular updates.

Should you self-host Aural?

Aural scores 43/100 on selfhost.directory (how scoring works) and ranks #8 of 9 in Human Resource Management (HRM). It has 221 GitHub stars.

It shipped 4 stable releases in the past year. The latest, v0.3.1, came out on 19 June 2026.

Setup is advanced: plan for several services and some ongoing maintenance. It is MIT-licensed and written mostly in Typescript.

Its closest alternative on selfhost.directory is Frappe HR (74/100, 8 975 stars). It scores higher overall, so compare the two before you pick. See Aural vs Frappe HR side by side.

Features

  • Adaptive AI follow-ups
  • AI-generated interviews from plain language
  • AI-generated session reports
  • Anti-cheating controls
  • Candidate bulk import
  • Live coding with Monaco Editor
  • Multilingual Support
  • Multi-mode interviews (chat, voice, video)
  • Pluggable LLM providers
  • Practice mode with AI coaching
  • REST API with OpenAPI spec
  • Team management with RBAC
  • Whiteboard drawing with Excalidraw
  • XLSX/PDF export

Aural README

How to install Aural

Install Aural with Docker

Docker
Environment variables
NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_ANON_KEY, SUPABASE_URL, SUPABASE_ANON_KEY, SUPABASE_SERVICE_ROLE_KEY, DATABASE_URL

npx supabase start

This pulls the Supabase Docker images, starts all services, and automatically applies all migrations

Requires Docker installed. Supabase runs in Docker containers.

How to configure Aural

  • AZURE_OPENAI_API_KEY
  • AZURE_OPENAI_DEPLOYMENT
  • AZURE_OPENAI_ENDPOINT────────────────────────────────────── Azure OpenAI Realtime Voice Relay ────────────────────────────────────── Backup relay for environments without Doubao credentials.

    ────────────────────────────────────── Azure OpenAI Realtime Voice Relay ────────────────────────────────────── Backup relay for environments without Doubao credentials.

  • AZURE_OPENAI_VOICE
  • DATABASE_URLpostgresql://postgres:postgres@127.0.0.1:54322/postgres
  • DOUBAO_ACCESS_TOKEN
  • DOUBAO_API_KEY
  • DOUBAO_APP_ID────────────────────────────────────── Volcengine Doubao Voice Relay ────────────────────────────────────── Seed ASR requires DOUBAO_API_KEY; Qwen ASR uses QWEN_ASR_API_KEY instead. The primary relay also requires DOUBAO_APP_ID + DOUBAO_ACCESS_TOKEN for TTS.

    ────────────────────────────────────── Volcengine Doubao Voice Relay ────────────────────────────────────── Seed ASR requires DOUBAO_API_KEY; Qwen ASR uses QWEN_ASR_API_KEY instead. The primary relay also requires DOUBAO_APP_ID + DOUBAO_ACCESS_TOKEN for TTS.

  • DOUBAO_ASR_ACTIVE_SPEECH_HOLD_MS
  • DOUBAO_ASR_END_WINDOW_MSOptional ASR timing overrides. The defaults are tuned for natural interview pauses and should work well for most deployments.

    Optional ASR timing overrides. The defaults are tuned for natural interview pauses and should work well for most deployments.

  • DOUBAO_ASR_FINAL_COALESCE_MS
  • DOUBAO_ASR_LONG_FINAL_COALESCE_MS
  • DOUBAO_ASR_MAX_ACTIVE_SPEECH_HOLD_MS
  • DOUBAO_ASR_PENDING_FINAL_QUIET_MS
  • DOUBAO_ASR_RESOURCE_IDvolc.seedasr.sauc.duration
  • DOUBAO_ASR_SHORT_FINAL_COALESCE_MS
  • DOUBAO_TTS_PCM_SAMPLE_LAYOUTint16le
  • DOUBAO_TTS_RESOURCE_IDseed-tts-2.0
  • DOUBAO_TTS_SPEECH_RATE1
  • DOUBAO_VOICE_ENen_female_dacey_uranus_bigtts
  • DOUBAO_VOICE_ZHzh_female_shuangkuaisisi_uranus_bigtts
  • GEMINI_API_KEYGoogle Gemini

    Google Gemini

  • JINA_READER_API_KEYOptional: raises the rate limit for the browser-backed fallback used when a public JD page blocks normal server-side fetching (for example, HTTP 403).

    Optional: raises the rate limit for the browser-backed fallback used when a public JD page blocks normal server-side fetching (for example, HTTP 403).

  • KIMI_API_KEYMoonshot Kimi

    Moonshot Kimi

  • KIMI_BASE_URL
  • LOG_LEVEL────────────────────────────────────── Optional ──────────────────────────────────────

    ────────────────────────────────────── Optional ──────────────────────────────────────

  • MINIMAX_API_KEYMiniMax

    MiniMax

  • MINIMAX_BASE_URL
  • NEXT_PUBLIC_APP_URLhttp://localhost:3000────────────────────────────────────── App URL ──────────────────────────────────────

    ────────────────────────────────────── App URL ──────────────────────────────────────

  • NEXT_PUBLIC_OPENAI_VOICE_RELAY_URLws://localhost:8767
  • NEXT_PUBLIC_SUPABASE_ANON_KEY
  • NEXT_PUBLIC_SUPABASE_URLhttp://127.0.0.1:54321────────────────────────────────────── Supabase ──────────────────────────────────────

    ────────────────────────────────────── Supabase ──────────────────────────────────────

  • NEXT_PUBLIC_VOICE_RELAY_PRIMARYvoicePrimary relay preference: "auto" | "voice" | "openai" Recommended for best voice quality when Doubao credentials are configured.

    Primary relay preference: "auto" | "voice" | "openai" Recommended for best voice quality when Doubao credentials are configured.

  • NEXT_PUBLIC_VOICE_RELAY_URLws://localhost:8766Browser-facing relay URLs. In production behind a reverse proxy, these can point to same-origin WebSocket paths such as /ws/voice and /ws/openai-voice.

    Browser-facing relay URLs. In production behind a reverse proxy, these can point to same-origin WebSocket paths such as /ws/voice and /ws/openai-voice.

  • OPENAI_API_KEYOpenAI

    OpenAI

  • OPENAI_BASE_URL
  • OPENAI_REALTIME_TRANSCRIPTION_MODEL
  • OPENAI_VOICE_RELAY_PORT8767
  • QWEN_ASR_API_KEYOptional Qwen providers: qwen | qwen-audio. Use a key for dashscope.aliyuncs.com.

    Optional Qwen providers: qwen | qwen-audio. Use a key for dashscope.aliyuncs.com.

  • QWEN_ASR_NOISE_THRESHOLDEmpty uses the provider default: 0.3 for qwen, 0.1 for qwen-audio. Valid range: -1 to 1. Higher thresholds suppress more noise and may miss quiet speech.

    Empty uses the provider default: 0.3 for qwen, 0.1 for qwen-audio. Valid range: -1 to 1. Higher thresholds suppress more noise and may miss quiet speech.

  • RELAY_LLM_API_KEYOptional; falls back to GEMINI_API_KEY when RELAY_LLM_PROVIDER=gemini.

    Optional; falls back to GEMINI_API_KEY when RELAY_LLM_PROVIDER=gemini.

  • RELAY_LLM_BASE_URLOnly needed for OpenAI-compatible relay LLMs.

    Only needed for OpenAI-compatible relay LLMs.

  • RELAY_LLM_FALLBACK_BASE_URL
  • RELAY_LLM_FALLBACK_MODEL
  • RELAY_LLM_MODELgemini-3.1-flash-lite
  • RELAY_LLM_PROVIDERgemini────────────────────────────────────── Relay LLM ────────────────────────────────────── Used by the Volcengine voice relay for interviewer replies and context summarization. Defaults to Gemini and falls back to MiniMax when configured.

    ────────────────────────────────────── Relay LLM ────────────────────────────────────── Used by the Volcengine voice relay for interviewer replies and context summarization. Defaults to Gemini and falls back to MiniMax when configured.

  • RELAY_LLM_TEMPERATURE0
  • SUPABASE_ANON_KEY
  • SUPABASE_SERVICE_ROLE_KEY
  • SUPABASE_URLhttp://127.0.0.1:54321
  • VOICE_ASR_PRIMARYASR provider used by the Azure OpenAI relay: "openai" | "volc" Keep "openai" unless you want the Azure relay to use Doubao ASR.

    ASR provider used by the Azure OpenAI relay: "openai" | "volc" Keep "openai" unless you want the Azure relay to use Doubao ASR.

  • VOICE_ASR_PROVIDERTranscription provider for the primary relay; Seed remains the default. Qwen changes recognition only; Doubao TTS and the relay LLM are still required.

    Transcription provider for the primary relay; Seed remains the default. Qwen changes recognition only; Doubao TTS and the relay LLM are still required.

  • VOICE_RELAY_PORT8766────────────────────────────────────── Voice Relay ──────────────────────────────────────

    ────────────────────────────────────── Voice Relay ──────────────────────────────────────

Aural releases & version history

FAQ

Can I customize the interview experience?

Fully. You can set the AI tone (casual to formal), follow-up depth (light to deep), time limits, question types, branding, and scoring rubrics.

Is my data secure?

Yes, data is stored with Row Level Security, encrypted in transit and at rest. Passwords are hashed.

What languages are supported?

Interview language can be configured when creating a template. Supported languages include English, Chinese, Spanish, French, German, and others.

What interview modes are supported?

Aural supports text chat, voice, and video interviews. Participants choose their preferred mode, and mode-switching during a session can be allowed.

How does the AI interviewer work?

You design or let AI generate a structured interview with questions and scoring criteria. The AI conducts the conversation, adapts follow-ups based on responses, and delivers a transcript with scores and insights when done.

Can I try Aural for free?

Yes, the Free plan includes 3 interview templates, 100 AI tokens, and 30 minutes of sessions per month at no cost, with no credit card required.

More in Human Resource Management (HRM)

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…