Install the SDK

Where the package comes from, what it needs, and what you need ready before you start.

rendel is not on pub.dev yet. It lands there with general availability; until then it is installed from this repository, and your team is added to it during onboarding.

No access yet?

Email support@neonapps.co with the GitHub handles that need it and you have the package the same day. This is the only manual step in the whole integration, and it exists because the package is in private pilot, not because anything about it is gated.

The dependency

pubspec.yaml
dependencies:
  rendel:
    git:
      url: https://github.com/neon-apps/rendel.git
      path: sdk/flutter/rendel
      ref: v0.33.0
flutter pub get

Pin ref to a tag rather than to a branch. A git dependency on a moving branch re-resolves whenever the lockfile is regenerated, which turns "someone else's merge" into "our build changed".

Coming from neon_copilot

Before 0.32.0 the package was neon_copilot. Rename the dependency and its path as above, then change the import:

import 'package:rendel/rendel.dart';

That is all a build needs. The old names (NeonCopilot, NCConfig, CopilotTheme.neonDefault() and the rest) still work, marked deprecated, so the analyzer lists every line left to rename. They go at 1.0.

What it needs

Dart3.5 or newer
Flutter3.24 or newer
PlatformsiOS and Android, from the one package

Older toolchains fail version solving rather than compilation, so the error you get names the constraint rather than a line in our source.

What the SDK brings

rendel depends on crypto, http, image_picker and speech_to_text. The last two are the composer's "+" and microphone, and they work the moment the dependency is in: a photograph from the library or taken there and then, a PDF or a text file from Files, speech into the composer as it is heard. Nothing to wire.

Photos and Files need no permission anywhere: the pickers they open run outside your app and hand over only what was chosen. Android needs nothing from you either — the SDK declares the microphone and network permissions itself, and the camera app takes the photograph under its own. The build merges them into android/app/src/main/AndroidManifest.xml:

android/app/src/main/AndroidManifest.xml
<!-- The SDK already declares both; adding them here changes nothing. -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />

The one thing the SDK cannot write is iOS's microphone and camera prompts, because Apple shows them to your users in your app's name. Open ios/Runner/Info.plist and add these three lines inside the top-level <dict>, in your own words:

ios/Runner/Info.plist
<key>NSMicrophoneUsageDescription</key>
<string>Lets you speak to the assistant instead of typing.</string>
<key>NSSpeechRecognitionUsageDescription</key>
<string>Turns what you say into text for the assistant.</string>
<key>NSCameraUsageDescription</key>
<string>Lets you take a photo to show the assistant.</string>

Without them the copilot still works — the SDK leaves the microphone or Camera out rather than letting iOS close your app, and says so in the log as usage_description_missing. Add them and rebuild, and they appear.

Your own picker, or none

RendelConfig.onPickAttachment and RendelConfig.onDictate replace the built-ins with whatever your app already uses — a picker your users know, a recogniser you have tuned. RendelAttachIcon.off and RendelVoiceIcon.off remove a control altogether; the composer is then a text box and a send button.

What you need ready

  • A Flutter app. Any one. The copilot mounts as a launcher or opens from your own control; it does not take over navigation.
  • A test publishable key, from the console: your app's Settings → API keys, Copy beside Test. Publishable keys are safe to compile into a binary: they identify an app and an environment and grant nothing else.
  • Nothing on your backend. This surprises people, so it is worth stating plainly: an action handler is a Dart function, and returning a hardcoded map from it is a complete, working integration. You can add the real call later.

Next

Quickstart takes you from here to a copilot answering a real question, in about ten minutes.