Authoring Model
flue-eve supports two authoring styles. Both produce Flue agents under the hood.
Style A: Eve-style (declarative layout)
Place files in the standard Eve layout. The scaffold imports them into Flue runtime artifacts:
your-project/
├── agent/
│ ├── instructions.md # system prompt
│ ├── tools/
│ │ └── weather.ts # declarative tool
│ └── connections/
│ └── linear.ts # MCP connection
├── src/
│ └── app.ts # Flue Hono app
└── eve.config.ts # plugin configurationagent/tools/weather.ts:
export default {
name: "get_weather",
description: "Get weather for a city",
parameters: {
type: "object",
properties: { city: { type: "string" } },
required: ["city"],
},
execute: async ({ city }) => ({ city, temp: 72, condition: "sunny" }),
}Run npx flue-eve init to generate Flue runtime files from these declarations.
Style B: Flue-native (code-first)
Author agents directly with Flue's createAgent API:
// src/agents/assistant.ts
import { createAgent } from '@flue/runtime'
export default createAgent({
name: 'assistant',
model: 'anthropic/claude-sonnet-4-6',
instructions: 'You are a helpful assistant.',
tools: [/* ... */],
})This gives access to all Flue primitives: skills, sandbox, custom harness configuration, and the full Flue tool API.
Which to choose
- Use Eve-style to follow Eve tutorials/guides, migrate an existing Eve project, or prefer declarative tool definitions
- Use Flue-native for custom runtime behavior, full Flue API access, or when
your project already uses
@flue/runtime
Both styles are compatible with the same /eve/v1/* HTTP surface and
client/frontend imports.
Generated files
Files generated by npx flue-eve init are marked with @flue-eve/generated or
@flue-eve/injected comments. They are safe to edit, and re-running the
scaffold will not overwrite them unless you pass --force.
See authoring tools and authoring connections for detailed per-feature guides.