fentaris.json at the project root. The CLI uses this file to discover the project, run scripts, validate local state, and build runtime metadata. When an app starts without explicit port or path options, @fentaris/core also searches upward from the current working directory and uses the nearest project config defaults.
SDK-only projects do not need fentaris.json for local auth and secrets commands. When fentaris auth or fentaris secrets cannot find a project config file, it can discover the nearest package.json that depends on @fentaris/core and use optional package.json metadata for the entrypoint and local runtime directory.
Quick Start
Fields
name
Project name used in generated metadata and CLI output.
packageManager
Package manager used for generated scripts. During fentaris init, the selected binary is also used for dependency installation unless --skip-install is passed.
pnpmnpmbun
entrypoint
Runtime entrypoint copied into build metadata.
port
Local port printed by fentaris dev, used by runtime checks, and used by app.start() when the app does not pass an explicit port.
path
MCP endpoint path served by the generated proxy. app.start() uses this path when the app does not pass an explicit path.
http://localhost:4000/mcp.
authDir
Directory for local encrypted credentials and CLI auth state.
Generated projects include
.gitignore entries for .fentaris/ because it contains local credentials and build output. The committed .fentaris/secrets.manifest.json schema is not ignored.secrets
Optional secrets provider settings. Generated projects default to the local encrypted store.
fentaris
Optional Fentaris Cloud project metadata for forward-compatible cloud sync. Cloud sync is not available yet; keep using the local encrypted store.
SDK-Only Auth and Secrets Metadata
SDK-only projects can configurefentaris auth and fentaris secrets without creating fentaris.json:
entrypoint- TypeScript file scanned byfentaris secrets manifest.authDir- local runtime directory forsecrets.manifest.jsonandcredentials.enc.json, used by both auth and secrets commands.port,host, andpath- optional defaults used by the synthetic secrets project model.
entrypoint is omitted, fentaris secrets manifest checks src/index.ts, src/main.ts, and index.ts. Pass --entrypoint <path> when the file uses another name.
Application Config: cli.mcpAccounts
Agent-native tool discovery commands read cli.mcpAccounts from the Fentaris application config exported by the project entrypoint. Each MCP key declares the default selector and the selectors an agent may request with --as.
edge.controlPlane
The integrated device authority, enrollment routes, WebSocket gateway, planner, and reconciler are disabled by default. A minimal local development configuration is:
publicOrigin is the canonical origin used to generate enrollment and gateway URLs. Non-loopback origins must use HTTPS. basePath must not overlap the MCP path. stateDir is resolved beneath authDir and must not escape it.
Serializable configuration accepts only safe scalar fields. Approval callbacks, assignment resolvers, managed stores, and authorization services are TypeScript-only McpProxyOptions.edge.controlPlane adapters. Managed mode fails startup unless every required durable adapter is present.
The separate edge.control option enables agent-native inventory and explicit orchestration tools. It is independent from the integrated connection control plane and remains an explicit policy-governed opt-in. See Edge API Reference.
cli.mcpAccounts.<mcp>.default
Default account selector used when fentaris tools ... --mcp <mcp> omits --as.
The selector must be present in allowed.
cli.mcpAccounts.<mcp>.allowed
Selectors the CLI may use for the MCP. Values use user:<id> or group:<id>.
cli.mcpAccounts bounds CLI discovery choices. It is not a security boundary by itself; effective access still comes from Fentaris policy and credential resolution.Legacy Filename
The CLI can still discoverfentaris.config.json, but generated projects use fentaris.json.