Deepnote research: our notes on building agents
Get started

Playbook: choosing how to build an app

Compare data app projects and Streamlit app projects, see when to embed a block or call the API instead, and pick the right way to put an analysis in front of other people

Deepnote has two kinds of app project for putting an analysis in front of other people: data app projects and Streamlit app projects. Both are built by chatting with Deepnote Agent, both keep the queries in a notebook, and both are shared only with people who have access to the project. This page compares them, and covers what to use when the numbers have to appear somewhere else.

The options

OptionWhat you buildWho builds itBest for
Data app project (beta)An HTML page backed by one notebookDeepnote Agent, from a descriptionDashboards and self-serve tools with a polished interface
Streamlit app project (beta)A Streamlit app in app.py, hosted by Deepnote, with a notebookDeepnote Agent, or you in PythonPython-heavy interactive tools
Embedded blocksSingle charts or tables placed in another toolAnyone who can edit the notebookLive numbers inside Notion, Confluence or a website
Deepnote APIYour own product or service calling a notebookDevelopersShowing a notebook's results inside an app you already have

How to choose

Start with a data app project. Describe the dashboard or tool, and Deepnote Agent builds the page and the notebook behind it. The page's controls are the notebook's input blocks, and each viewer runs the notebook with their own values.

Then:

  • The tool is mostly Python logic with many interactions. A Streamlit app project gives you Streamlit's components and session state, written in app.py by you or the agent.
  • Many people ask the same few questions and want answers instantly. A Streamlit app can cache results for every viewer with st.cache_data. A data app runs the notebook for each viewer and keeps no shared results.
  • The numbers need to live in another tool. Embed the block in Notion, Confluence or a website. Data apps can't be embedded in other sites.
  • Your own product shows the result. Call the notebook from your server with the Deepnote API. See A notebook as a backend.
  • Viewers must not open the notebook. Share the project with them at App user access, which lets them use the app without seeing the notebook or the app's code. A person gets the most permissive of all their grants, so App user only works if workspace access, groups and direct sharing don't give them more. App users can still read every output of their own runs through the app's API access, not only what the page shows, so keep anything a viewer may not see out of the notebook's outputs. Keep secrets in integrations and environment variables, never in the app's code.

What they have in common

  • Access. Both are shared only with people who have access to the project: App user can use the app, View can also open the notebook and the app's code, and Edit can change them. Neither can be shared with anyone who has the link or made public. People outside the workspace can use an app once they're invited to the project and signed in.
  • Integrations. Queries run against the integrations connected to the project, and credentials stay on the server. With integrations that use per-user OAuth, such as Snowflake OAuth or BigQuery with Google OAuth, queries run with each viewer's own account. Embedded blocks are different: they show the block's saved output to anyone with the link, without querying again as the viewer.
  • Built with the agent. Deepnote Agent writes both, checks them for errors and fixes what it finds. You refine them in chat.

Where they differ

Data app projectStreamlit app project
Where it runsA new machine for each viewer's run, with the project's machine typeOne app server on the project's machine, shared by every viewer
What a viewer sees on openingThe results of their own latest run, or a prompt to run the notebookThe app, running
How it reads dataRuns the whole notebook as the viewer and shows the notebook's JSON outputPython in app.py queries the integrations, or runs the notebook as the viewer
How long results lastEach viewer's latest results, for your plan's run retention (1, 30 or 365 days)What the app keeps in session state or its cache
PublishingUnpublished until an editor sets it to PublishedAvailable to everyone with access as soon as it runs

Plan requirements

  • Data app projects, Streamlit app projects and embedded blocks: all plans.
  • App user access for individual people: Pro, Team and Enterprise.
  • Per-user OAuth integrations: Enterprise.

Related