Seyal is open source under AGPL-3.0 when the source is published. Read the self-host guide

Proof you can audit.

For the people who answer for what ships. In Seyal, the web app, MCP tools, rules and agents all reach Done through one check, and every step leaves a record.

A glass shield protects event rows beside a lock and fingerprint pattern.

Checks that hold across the product

The task service is the common path for changes made in the app, through MCP or by server-run agents.

One completion check

Every path to Done checks acceptance criteria, required evidence and approval tied to the current task version. Follow the completion check.

A record with every change

Changes and their events are written in the same transaction. Actor identities make actions by people, agents and client tokens distinguishable.

Scoped client access

Each MCP connection has its own token and tool scope. A member's token is limited to the projects they choose and expires after 90 days unless they pick another term. Only the token hash is stored; revoke the token to refuse its next request.

People own review

Agents never merge or delete in Seyal. You manage permissions in connected repositories and decide which integrations and AI features are enabled.

Permissions on every action

Every API route and MCP tool declares an action that one permission check allows or refuses. Owners change settings and export data, members do task work, and viewers read.

Guards for agent work

An agent should not be able to weaken the checks that judge its own work.

Text is data, not instructions

Task text that Seyal writes into agent instruction files and Dispatcher issues is marked as untrusted data, and commit messages are only recorded as progress notes. Once Ask Seyal has read board text, each change it proposes waits for a person to confirm it.

Sensitive changes need a person

Changes to auth, permissions, payments, migrations, CI or deploy, dependencies, production data and business decisions always need a person. Owners can adjust the rules in Settings.

Protected files and trusted checks

A pull request that touches protected paths, such as CI definitions, agent control files or package files, needs an owner's approval of that task version and checks Seyal can trust. A new PR head makes earlier checks and reviews stale.

Fails closed by default

The defaults favour refusing a request over guessing.

Sign-in

Production needs owner emails. Ownership needs a verified email or a trusted single-tenant Microsoft account. You can limit sign-in to listed email domains.

Outbound webhooks

Webhooks to private and local addresses are refused. Only owners can read a webhook's address; everyone else sees the host.

Size and spend limits

Request bodies have size limits, and public intake and incident links have rate limits. A team daily AI ceiling and per-project budgets stop new AI runs once spending reaches them.

Where your data goes

Self-hosted task records stay on your server. That does not make connected providers local: sign-in, fonts, coding clients and optional integrations have their own data flows.

Your installation
Tasks, evidence records and event history live in your Postgres database. You choose the hosting region and manage access, updates and backups. INFOC’s own deployment is hosted in Singapore.
Microsoft Entra ID
The supported production sign-in uses Microsoft. Configure your own tenant and app registration.
Coding agents and optional AI
Your coding client sends context according to its provider settings. Seyal’s optional AI features send task text and context to Anthropic, OpenAI, Google or Azure OpenAI when configured. Audits and reviews can include repository code and PR diffs.
Repository services
Configured GitHub or Azure DevOps connections exchange repository and pull request information. Evidence links may point to those external systems.
Messages and notifications
Configured Microsoft 365 email intake reads the named mailbox. Email, WhatsApp and web push delivery send notification content to their respective providers. Outbound webhooks, including Teams and Slack formats, send event data to the addresses you configure.
Google Fonts
The marketing site and web app load fonts from Google Fonts. This sends the visitor’s IP address and browser details to Google; task records are not sent with the font request.

Review provider settings and terms before enabling a connection. Configure your installation.

Keep secrets outside the repository

Provide settings through environment variables. The repository’s .env.example lists the supported options.

Configure the server

Set database, sign-in and integration credentials in your environment. Keep real tokens and secrets out of source control and logs.

Protect the installation

Use HTTPS and a private database connection. Turn off development sign-in on hosted servers, and configure trusted proxy handling only behind a proxy you control. Read the production setup.

Report a vulnerability

Contact INFOC to report a suspected security issue.

Share a private report

Describe the affected version, the steps needed to reproduce the issue and the impact. Leave credentials and private task data out of the report. Use the contact options on the INFOC company website.