Free · MIT · Open source
Open Research
An open-source research agent. Ask a question; it plans searches, reads the most relevant pages, and answers with numbered citations you can check.
Features
What it does
Answers with numbered citations
It plans searches, reads the most relevant pages, and every [n] points at a source a tool actually returned.
Guarded page reading
page_read fetches only public http(s) pages. It refuses localhost, internal names and private or metadata addresses, and re-checks every redirect.
One tool layer with approvals
Every tool call goes through one broker that applies the agent's policy, asks you before anything with side effects, and writes an audit row first.
Saved reports
Threads, messages, the audit log, approvals and reports live in one SQLite file.
Remix in one file
agent.config.ts holds the instructions, a policy per tool (allow, approve or deny) and the limits. The broker enforces them on the server, not the prompt.
One key, every model
Use with your CompanyFabric key
- 1
Create an account and make a key on the keys page. New accounts get starter credit.
- 2
Put it in the template's
.env.companyfabric/autopicks a suitable model per request, and the exact charge of each turn comes back with the answer. - 3
Run it:
pnpm devfor lite (Vercel works), ordocker compose upfor Hermes. With no key it runs a clearly labelled demo.
OPENAI_BASE_URL=https://api.companyfabric.com/v1
OPENAI_API_KEY=sk-cf-…
MODEL=companyfabric/autoOpenAI directly, or a local server such as Ollama, LM Studio or vLLM, works too: any OpenAI-compatible endpoint with tool calling.
Runtimes
Lite or Hermes
Lite runs the agent loop in the Next.js server. Hermes runs each turn in a Hermes Agent container (v0.22.5, pinned by digest), which calls the app's tools back over MCP, so policies, approvals and the audit log are the same.
| Capability | Lite | Hermes |
|---|---|---|
| Web search with numbered citations | Yes | Yes |
| Read web pages (SSRF-guarded) | Yes | Yes |
| Approval before side effects | Yes | Yes |
| Audit row before every tool call | Yes | Yes |
| Save reports | Yes | Yes |
| Memory across threadsHermes memory toolset | No | Yes |
| Files and terminal in a sandboxEnable the file / terminal toolsets in hermes/config.yaml | No | Off by default |
| Browser for JavaScript-heavy pagesHermes browser_exec; needs the terminal toolset | No | Off by default |
| Scheduled research (cron)Hermes cron works; this UI does not manage schedules yet | No | Not in the UI yet |
| Runs on serverless hosting (Vercel)Hermes needs a long-running container | Yes | No |
What is proven
Status
Early. Checked in CI on every change: Install, typecheck, unit tests and production build; Hermes starts with the app's tools loaded (no model is called in CI).
- implemented-untestedSearch through Parallel (keyless tier)
- implemented-untestedSearch through Exa
- implemented-untestedLive research eval (10 questions, citation checks)
- implemented-untestedA Hermes turn with a real model
- not yetCompanyFabric search: not released yet
- not yetManaging scheduled research from the UI
Configuration
Environment
| Variable | Default | What it is |
|---|---|---|
OPENAI_BASE_URL | https://api.companyfabric.com/v1 | Any OpenAI-compatible chat.completions endpoint with tool calling. |
OPENAI_API_KEY | none | The model key. With none set, the app runs a labelled DEMO. |
MODEL | companyfabric/auto | The model id. companyfabric/auto picks a suitable model per request. |
SEARCH_PROVIDER | parallel | parallel (free, rate-limited, no key) or exa. companyfabric is not released yet. |
PARALLEL_API_KEY | none | Lifts Parallel's free-tier limits. |
EXA_API_KEY | none | Needed when SEARCH_PROVIDER=exa. |
COMPANYFABRIC_SEARCH_ENABLED | false | CompanyFabric search is not released yet; leave it off. |
RUNTIME | none | lite or hermes. Empty: hermes when HERMES_URL is set, lite otherwise. |
HERMES_URL | none | Set for you by docker-compose.yml. |
HERMES_API_KEY | none | Hermes only. Generate with: openssl rand -hex 32 |
TOOL_TOKEN | none | Hermes only: lets Hermes call the app's tools at /api/mcp. Generate with: openssl rand -hex 32 |
DATA_DIR | ./data | Where the SQLite database lives. |
MIT
License
Open Research is MIT-licensed, © 2026 Creative Tim. Its UI is adapted from AI Elements (Apache-2.0) and shadcn/ui (MIT).
Not affiliated with any company whose AI products offer similar research features.